我在結構中設置了值,但未設置值。該方法被稱爲因此,不能並行。怎麼可能?這是golang,忘了說。在結構中設置值失敗
如果我更改代碼以在「start」方法(而不是「init」方法)中設置值,但在「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與零相同,是數組中的第一個索引。我總是想從1開始寫循環而不是0 XD – Chelovek