結構體首字母大寫則包外可見(公開的),否者僅包內可訪問(內部的)
結構體屬性名首字母大寫包外可見(公開的),否者僅包內可訪問(內部的)
組合:⚫ 結構體名首字母大寫,屬性名大寫:結構體可在包外使用,且訪問其大寫的屬性名
⚫ 結構體名首字母大寫,屬性名小寫:結構體可在包外使用,且不能訪問其小寫的屬性名
⚫ 結構體名首字母小寫,屬性名大寫:結構體只能在包內使用,屬性訪問在結構體嵌入時
由被嵌入結構體(外層)決定,被嵌入結構體名首字母大寫時屬性名包外可見,否者只能
在包內使用
⚫ 結構體名首字母小寫,屬性名小寫:結構體只能在包內使用
(1)user.go
package users
type ddr struct
//大寫在包外可以訪問 小寫包外不可以訪問 匿名有一種情況特殊因為它可以省略名字
//命名and 命名嵌入
//結構體的可見性 結構體名稱如果開頭小寫 則包可見 大寫則對外可見
//結構體內部元素開頭大寫則包外可見 小寫則包內可見
type users struct
/*匿名嵌入s為結構體 a為結構體中的元素
s a => s => 結構體大寫 包外可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體大寫 包外可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體大寫 包外可以建立結構體物件 屬性也不可以訪問
這種情況比較特殊 想訪問在訪問的時候需要省略匿名嵌入的名字直接用 結構體.匿名嵌入結構體的首字母大寫的元素 是可以訪問的但是要防止出現多個匿名結構體元素相同會報錯的問題
s a => s => 結構體大寫 包外可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體小寫 包外不可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體小寫 包外不可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體小寫 包外不可以建立結構體物件 屬性也不可以訪問
s a => s => 結構體小寫 包外不可以建立結構體物件 屬性也不可以訪問
*/
(2)main.go
package main
import
("fmt"
"virsibility/users"
)func
main()
fmt.
println
(m) fmt.
println
(m.name)
fmt.
println
(m.no)
}
package main
import
"fmt"
type addrs struct
type user struct
//可以直接定義函式呼叫函式返回乙個結構體
func
newuser
(id int
, name string
, region, street string
) user ,}
}//可以直接定義函式呼叫函式返回乙個結構體指標
func
newuserto
(id int
, name string
, region, street string
)*user ,}
}func
main()
c 結構體 建構函式
struct node node int r,int c,int dist r r c c dist dist node 為定義函式 node int r,int c,int dist r r c c dist dist 為定義函式時的引數列表 struct node x 1,2,3 那麼x.r 1...
結構體構造和析構函式
2017,嘗試一切,堅持下去!之前面試遇到過這個題,這麼基礎的竟然不會寫,丟人呀 前幾天偶然看見某神的博文,基礎的1 7仔細看了兩遍,默寫基本 練到手熟!大神的博文 class string 請編寫string的上述4 個函式。string 的析構函式 string string void stri...
結構體使用以及函式優化
通過學習高博一起做rgbdslam系列,體會到乙個工程專案由簡單到複雜的過程,列出自己認為重要的地方 1.將一些相關的變數封裝到結構體中,歸類之後一是方便觀察,二是處理起來很有條理 2.將寫好,不經常改動的函式寫到新的檔案中,通過鏈結庫以及包含標頭檔案來實現呼叫函式 3.專案要引用到的引數,可以專門...