GO 指標*&問題疑問
package main
import (
"fmt"
)
func main() {
//var t *stuffClient = NewStuffClient(Connection{})
//fmt.Println(*t)
x := NewStuffClient(Connection{})
fmt.Println(x) // prints &{{} 2 3}
x = NewStuffClient(
Connection{},
WithRetries(1),
)
fmt.Println(x) // prints &{{} 2 1}
x = NewStuffClient(
Connection{},
WithRetries(1),
WithTimeout(1),
)
fmt.Println(x) // prints &{{} 1 1}
}
var defaultStuffClientOptions = StuffClientOptions{
Retries: 3,
Timeout: 2,
}
type StuffClientOption func(*StuffClientOptions)
type StuffClientOptions struct {
Retries int //number of times to retry the request before giving up
Timeout int //connection timeout in seconds
}
func WithRetries(r int) StuffClientOption {
return func(o *StuffClientOptions) {
o.Retries = r
}
}
func WithTimeout(t int) StuffClientOption {
return func(o *StuffClientOptions) {
o.Timeout = t
}
}
type StuffClient interface {
DoStuff() error
}
type stuffClient struct {
conn Connection
timeout int
retries int
}
type Connection struct {}
func NewStuffClient(conn Connection, opts ...StuffClientOption) StuffClient {
options := defaultStuffClientOptions
for _, o := range opts {
o(&options)
}
return &stuffClient{
conn: conn,
retries: options.Retries,
timeout: options.Timeout,
}
}
func (c stuffClient) DoStuff() error {
return nil
}
列印的結果
//&{{} 2 3}
//&{{} 2 1}
//&{{} 1 1}
嘗試*取值操作列印結果報錯
fmt.Println(*x)
//prog.go:11:17: invalid indirect of x (type StuffClient)
//Program exited.
如果介面不能進去*取值操作,那 func return 為啥返回&呢?
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Go指標複製問題Go指標
- prometheus-go-sdk不活躍指標清理問題PrometheusGo指標
- C++指標問題C++指標
- 有關this指標指向問題指標
- C語言指標安全及指標使用問題C語言指標
- 面試疑難問題面試
- C語言指標常見問題C語言指標
- excel多指標柱圖問題求教Excel指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- c 語言指標操作經典問題指標
- 指標常見問題(Android之JNI)指標Android
- GO 指標Go指標
- C----陣列越界問題、指標入門陣列指標
- java.lang.NullPointerException 空指標異常問題JavaNullException指標
- maven的編碼問題、解決和疑問Maven
- go channel問題Go
- 有些疑問
- Go中取址符(&)取的到底是記憶體地址,還是指標變數?Go記憶體指標變數
- 二分類問題常見的評價指標指標
- 安卓開發中空指標問題 怎麼解決呢安卓指標
- js利用指標操作約瑟夫問題程式碼例項JS指標
- 關於C++當中的指標懸空問題C++指標
- 使用指標接收器時,值物件自動取指標的奇怪問題指標物件
- Lotus Quickr connectors 部署問題排疑UI
- 工作疑難問題解決4例
- Go 陣列指標(指向陣列的指標)Go陣列指標
- [提問交流]開發問題求指導
- pycharm 小疑問PyCharm
- 我的疑問
- [疑問]weblogic8.1的自動更新JSP問題.WebJS
- GO語言————4.9、指標Go指標
- GO 空指標和nilGo指標
- defer問題——面試Go必看面試Go
- Go TCP 粘包問題GoTCP
- go熱更新問題求助Go
- go除錯的問題。Go除錯
- go path 存在的問題Go
- 陣列和指標的問題陣列指標