日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

golang结构体

發布時間:2025/6/15 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang结构体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結構體

type Student struct {id intname stringsex byteage int }

初始化

type Student struct {id intname stringsex byte //字符類型age int }func main() {//順序初始化,每個成員必須初始化var s1 Student = Student{1, "2", 'm', 18}fmt.Println(s1)//指定成員初始化,沒有初始化的成員,自動賦值為0student := Student{name: "mike", age: 19}fmt.Println(student) }

結構體指針

func main() {var s1 *Student = &Student{1, "2", 'm', 18}fmt.Println("*s1 = ", *s1)//指定成員初始化,沒有初始化的成員,自動賦值為0student := &Student{name: "mike", age: 19}//打印類型fmt.Printf("student type %T\n", student)fmt.Println("*student = ", *student) }

輸出

*s1 = {1 2 109 18} student type *main.Student *student = {0 mike 0 19} func main() {var s Studentvar p1 *Studentp1 = &s//通過指針操作成員 p1.id和(*p1).id完全等價,只能使用.p1.id = 1(*p1).name = "mike"p1.age = 11fmt.Println(*p1) }

new申請空間

func main() {p1 := new(Student)p1.id = 1(*p1).name = "mike"p1.age = 11fmt.Println(*p1) }

結構體比較

如果結構體成員都是可比較的,那結構體也是可比較的,可以使用==或!=,但是不支持>或<

函數參數

值傳遞不是引用

func test01(s Student) {s.id = 666fmt.Println("test01: ", s) }func main() {s := Student{1, "mike", 'x', 11}test01(s)fmt.Println("main: ", s) }

輸出

test01: {666 mike 120 11} main: {1 mike 120 11}

大小

unsafe.Sizeof

func main() {var p Powerp.age = 11p.name = "wfwef"fmt.Println(unsafe.Sizeof(p)) }

內存地址

結構體的變量地址等于首個元素的內存地址

nil

空struct這么表示:

struct{}{}

例子:

package mainimport "fmt"func main() {s := struct{}{}fmt.Printf("%T,%v,%+v\n", s, s, s) }

輸出

struct {},{},{}

大括號左右可以多個空格,比如這樣也是可以的

struct {} {}

總結

以上是生活随笔為你收集整理的golang结构体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。