鍍金池/ 問(wèn)答/GO/ 為何自定義包中的方法首字母大寫仍然undefined

為何自定義包中的方法首字母大寫仍然undefined

stack.go

package stack

type Stack struct{
    i        int
    data  [10]int
}

func (S *Stack) Push(n int) {
    S.data[S.i] = n
    S.i++
}

demothree.go

package main

import(
"fmt"
"stack"
)

func main() {
    var s stack.Stack
    fmt.Println(s)
    stack.Push(8)
    fmt.Println(s)
}

執(zhí)行結(jié)果為:

λ go run demothree.go
# command-line-arguments
.\demothree.go:11:2: undefined: stack.Push

看著教程書的答案寫的,仍是很是苦惱。。

回答
編輯回答
朽鹿

stack.Push沒(méi)這個(gè)函數(shù)啊。PushStack這個(gè)結(jié)構(gòu)體的一個(gè)方法。你應(yīng)該寫成s.Push。

2018年3月16日 04:40