初歩的な質問で申し訳ございません。
自作のパッケージで構造体と構造体メソッドを使いたいと考え、importやgo mopduleでの設定はうまくいきましたが、main.goでimportしたら、パッケージの構造体メソッドがエラーで使用できないです。
ぜひアドバイスをよろしくお願いいたします。
★環境
Go言語 go1.16.6 linux/amd64 OS ; CentOS8
前提・実現したいこと
自作パッケージ(構造体・メソッドを作っただけのパッケージ)
をメイン実行ファイルmain.goにインポートして、構造体とメソッドを使いたい。
発生している問題・エラーメッセージ
go run main.go
で、メイン処理を起動させると必ず下記のエラーが発生します。
$ go run main.go # command-line-arguments ./main.go:12:18: vd.is_numeric undefined (cannot refer to unexported field or method mymodule.(*MyValidator).is_numeric)
試したこと
★mymodule/mystruct.go単体だけで、main()を一時的に作って、構造体を呼び出せば問題なくメソッドが使えます。
該当のソースコード
★フォルダ構成
. ├── go.mod ├── main.go └── mymodule └── mystruct.go
★main.go
golang
1package main 2 3import( 4 "fmt" 5 "myproject/mymodule" 6) 7 8func main(){ 9 vd := new(mymodule.MyValidator) 10 fmt.Println(vd) //(A) 11 fmt.Println(vd.is_numeric("12345")) //(B) この(B)をコメントアウトさせて、(A)だけ出力 12 // した場合は正常終了する。「&{[]}」が返ってくる 13}
★自作パッケージ mystruct.go
golang
1package mymodule 2 3import( 4 "regexp" 5) 6 7type MyValidator struct { 8 ErrorMessage []string 9} 10 11func (v *MyValidator) is_numeric(value string) bool { 12 if( regexp.MustCompile(`^[0-9]$`).MatchString(value) ){ 13 return false 14 } 15 return true 16}
回答1件
あなたの回答
tips
プレビュー