構造体に値を設定しましたが、設定されていません。したがって、メソッドは並列ではなく呼び出されます。どのようにすることができますか?これはゴランです、忘れてしまいました。構造体内の値の設定に失敗する
"init"メソッドの代わりに "start"メソッドでコードを設定値に変更すると、機能します。 "init"メソッドの設定値は失敗します。私には非常に奇妙に見えます。ここで
package main
import (
"log"
"net/http"
"time"
)
type tServer struct {
ipAddress string
port string
server http.Server
}
var server tServer
func main() {
server.ipAddress = "0.0.0.0"
server.port = "12345"
server.init()
server.start()
time.Sleep(time.Second * 5)
}
func (srv tServer) init() {
srv.server.Addr = srv.ipAddress + ":" + srv.port
log.Println("srv.server.Addr=", srv.server.Addr) ////////////////////
}
func (srv tServer) start() {
log.Println("srv.server.Addr=", srv.server.Addr) ////////////////////
go srv.startServerRoutine()
}
func (srv tServer) startServerRoutine() {
log.Println("Server started at", srv.server.Addr) //
err := srv.server.ListenAndServe()
if err != nil {
log.Println("Server Error:", err) //
return
}
}
コンソールです:
2017/04/18 19:43:07 srv.server.Addr= 0.0.0.0:12345
2017/04/18 19:43:07 srv.server.Addr=
2017/04/18 19:43:07 Server started at
2017/04/18 19:43:07 Server Error: listen tcp :80: bind: permission denied
あなたは方法は、あなたがその受信機のポインタhttps://tour.golang.orgにそのメソッドを定義する必要があり、その受信機の値を変更したい場合/メソッド/ 4 – mkopriva
omg、ありがとう。私はそれを知っていたが、私はいつも何とかそれを忘れている。 XDはarrayの最初のインデックスであるゼロについて同じことです。私はいつも0からXD – Chelovek