2626< meta property ="og:site_name " content ="jrlee's blog ">
2727< meta property ="og:description " content ="相比于Java,在Go语言中没有类的概念,但是多了结构体。结构体与Java中的类很像,是表示一系列同一类型或不同类型的数据构成的数据集合。 ">
2828< meta property ="og:locale " content ="zh_CN ">
29+ < meta property ="og:image " content ="http://example.com/p/9b186663/1.png ">
30+ < meta property ="og:image " content ="http://example.com/p/9b186663/2.png ">
31+ < meta property ="og:image " content ="http://example.com/p/9b186663/3.png ">
32+ < meta property ="og:image " content ="http://example.com/p/9b186663/4.png ">
2933< meta property ="article:published_time " content ="2024-11-15T11:22:02.000Z ">
3034< meta property ="article:modified_time " content ="2024-11-15T11:25:31.531Z ">
3135< meta property ="article:author " content ="jrlee ">
3236< meta property ="article:tag " content ="Golang入门 ">
3337< meta name ="twitter:card " content ="summary_large_image ">
38+ < meta name ="twitter:image " content ="http://example.com/p/9b186663/1.png ">
3439
3540
3641 < meta name ="referrer " content ="no-referrer-when-downgrade ">
@@ -362,14 +367,14 @@ <h1 id="结构体声明"><a href="#结构体声明" class="headerlink" title="
362367< li > 该方法只声明了一个结构体,没有给成员变量赋值,则结构体中所有变量均为默认值。</ li >
363368</ ol >
364369< p > 运行结果:</ p >
365-
370+ < img src =" /p/9b186663/1.png " srcset =" /img/loading.gif " lazyload class ="" title =" 运行结果 " >
366371
367372< h1 id ="访问结构体成员 "> < a href ="#访问结构体成员 " class ="headerlink " title ="访问结构体成员 "> </ a > 访问结构体成员</ h1 > < p > 在上述的代码中,都是直接输出整个结构体,如果需要访问到结构体中的某一个成员变量,或者改变已经声明好的某个成员变量的值,就需要使用到< code > .</ code > 操作符。</ p >
368373< p > 代码示例:</ p >
369374< figure class ="highlight go "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > < span class ="line "> 14</ span > < br > < span class ="line "> 15</ span > < br > < span class ="line "> 16</ span > < br > < span class ="line "> 17</ span > < br > < span class ="line "> 18</ span > < br > < span class ="line "> 19</ span > < br > < span class ="line "> 20</ span > < br > < span class ="line "> 21</ span > < br > < span class ="line "> 22</ span > < br > < span class ="line "> 23</ span > < br > < span class ="line "> 24</ span > < br > < span class ="line "> 25</ span > < br > < span class ="line "> 26</ span > < br > < span class ="line "> 27</ span > < br > < span class ="line "> 28</ span > < br > < span class ="line "> 29</ span > < br > < span class ="line "> 30</ span > < br > < span class ="line "> 31</ span > < br > < span class ="line "> 32</ span > < br > </ pre > </ td > < td class ="code "> < pre > < code class ="hljs go "> < span class ="hljs-keyword "> package</ span > main< br > < br > < span class ="hljs-keyword "> import</ span > < span class ="hljs-string "> "fmt"</ span > < br > < br > < span class ="hljs-function "> < span class ="hljs-keyword "> func</ span > < span class ="hljs-title "> main</ span > < span class ="hljs-params "> ()</ span > </ span > {< br > < span class ="hljs-comment "> // 声明结构体并赋值</ span > < br > stu := Student{< span class ="hljs-string "> "张三"</ span > , < span class ="hljs-number "> 18</ span > , < span class ="hljs-string "> "男"</ span > , < span class ="hljs-string "> "大一"</ span > }< br > < span class ="hljs-comment "> // 打印结构体的值</ span > < br > fmt.Println(< span class ="hljs-string "> "学生姓名:"</ span > , stu.Name)< br > fmt.Println(< span class ="hljs-string "> "学生年龄:"</ span > , stu.Age)< br > fmt.Println(< span class ="hljs-string "> "学生性别:"</ span > , stu.Gender)< br > fmt.Println(< span class ="hljs-string "> "学生年级:"</ span > , stu.Grade)< br > < span class ="hljs-comment "> // 修改结构体中的值</ span > < br > stu.Name = < span class ="hljs-string "> "李四"</ span > < br > stu.Age = < span class ="hljs-number "> 19</ span > < br > stu.Gender = < span class ="hljs-string "> "女"</ span > < br > stu.Grade = < span class ="hljs-string "> "大二"</ span > < br > < span class ="hljs-comment "> // 打印修改后的结构体的值</ span > < br > fmt.Println(< span class ="hljs-string "> "-----------------"</ span > )< br > fmt.Println(< span class ="hljs-string "> "学生姓名:"</ span > , stu.Name)< br > fmt.Println(< span class ="hljs-string "> "学生年龄:"</ span > , stu.Age)< br > fmt.Println(< span class ="hljs-string "> "学生性别:"</ span > , stu.Gender)< br > fmt.Println(< span class ="hljs-string "> "学生年级:"</ span > , stu.Grade)< br > }< br > < br > < span class ="hljs-comment "> // 定义结构体Student</ span > < br > < span class ="hljs-keyword "> type</ span > Student < span class ="hljs-keyword "> struct</ span > {< br > Name < span class ="hljs-type "> string</ span > < br > Age < span class ="hljs-type "> int</ span > < br > Gender < span class ="hljs-type "> string</ span > < br > Grade < span class ="hljs-type "> string</ span > < br > }< br > </ code > </ pre > </ td > </ tr > </ table > </ figure >
370375
371376< p > 运行结果:</ p >
372-
377+ < img src =" /p/9b186663/2.png " srcset =" /img/loading.gif " lazyload class ="" title =" 运行结果 " >
373378
374379< p > 如上所示,使用< code > .</ code > 操作符可以很方便的访问或者修改结构体中的某一个成员变量。</ p >
375380< h1 id ="方法 "> < a href ="#方法 " class ="headerlink " title ="方法 "> </ a > 方法</ h1 > < p > 在之前的文章中学习过go语言中的函数,其实在go语言中既有函数又有方法,方法就是规定了接受者的函数,接受者就是在函数名称前面多了一个参数,表示将该方法绑定到这个参数对应的类型上,绑定之后该方法就只能被这个参数对应的类型的变量才能够调用。</ p >
@@ -381,7 +386,7 @@ <h1 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</
381386
382387< p > 在上述代码中定义了一个print方法,该方法的接受者为Student类型,则该方法与Student类型绑定,也就只能Student类型的变量才能够调用,所以在main中使用< code > stu.print()</ code > 调用该方法不会有问题,但是在main中无法直接调用该方法,并且使用stu调用该方法时,在方法内部可以拿到stu的成员变量的值。</ p >
383388< p > 运行结果: </ p >
384-
389+ < img src =" /p/9b186663/3.png " srcset =" /img/loading.gif " lazyload class ="" title =" 运行结果 " >
385390
386391< h1 id ="结构体指针 "> < a href ="#结构体指针 " class ="headerlink " title ="结构体指针 "> </ a > 结构体指针</ h1 > < p > 结构体作为一种类型,同样有其对应的指针类型,例如上述例子中的结构体Student,就有其对应的指针类型< code > *Student</ code > ,可声明一个指针用于存储结构体变量的地址。</ p >
387392< figure class ="highlight go "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > </ pre > </ td > < td class ="code "> < pre > < code class ="hljs go "> < span class ="hljs-keyword "> var</ span > stuPointer *Student< br > </ code > </ pre > </ td > </ tr > </ table > </ figure >
@@ -394,7 +399,7 @@ <h1 id="结构体指针"><a href="#结构体指针" class="headerlink" title="
394399< figure class ="highlight go "> < table > < tr > < td class ="gutter "> < pre > < span class ="line "> 1</ span > < br > < span class ="line "> 2</ span > < br > < span class ="line "> 3</ span > < br > < span class ="line "> 4</ span > < br > < span class ="line "> 5</ span > < br > < span class ="line "> 6</ span > < br > < span class ="line "> 7</ span > < br > < span class ="line "> 8</ span > < br > < span class ="line "> 9</ span > < br > < span class ="line "> 10</ span > < br > < span class ="line "> 11</ span > < br > < span class ="line "> 12</ span > < br > < span class ="line "> 13</ span > < br > < span class ="line "> 14</ span > < br > < span class ="line "> 15</ span > < br > < span class ="line "> 16</ span > < br > < span class ="line "> 17</ span > < br > < span class ="line "> 18</ span > < br > < span class ="line "> 19</ span > < br > < span class ="line "> 20</ span > < br > < span class ="line "> 21</ span > < br > < span class ="line "> 22</ span > < br > < span class ="line "> 23</ span > < br > < span class ="line "> 24</ span > < br > </ pre > </ td > < td class ="code "> < pre > < code class ="hljs go "> < span class ="hljs-keyword "> package</ span > main< br > < br > < span class ="hljs-keyword "> import</ span > < span class ="hljs-string "> "fmt"</ span > < br > < br > < span class ="hljs-function "> < span class ="hljs-keyword "> func</ span > < span class ="hljs-title "> main</ span > < span class ="hljs-params "> ()</ span > </ span > {< br > < span class ="hljs-comment "> // 声明结构体并赋值</ span > < br > stu := Student{< span class ="hljs-string "> "张三"</ span > , < span class ="hljs-number "> 18</ span > , < span class ="hljs-string "> "男"</ span > , < span class ="hljs-string "> "大一"</ span > }< br > < span class ="hljs-comment "> // 定义结构体指针</ span > < br > < span class ="hljs-keyword "> var</ span > stuPointer *Student< br > < span class ="hljs-comment "> // 将结构体地址赋值给指针</ span > < br > stuPointer = &stu< br > < span class ="hljs-comment "> // 结构体指针通过点(.)操作符访问成员变量</ span > < br > fmt.Println(< span class ="hljs-string "> "姓名:"</ span > , stuPointer.Name)< br > fmt.Println(< span class ="hljs-string "> "年龄:"</ span > , stuPointer.Age)< br > fmt.Println(< span class ="hljs-string "> "性别:"</ span > , stuPointer.Gender)< br > fmt.Println(< span class ="hljs-string "> "年级:"</ span > , stuPointer.Grade)< br > }< br > < br > < span class ="hljs-keyword "> type</ span > Student < span class ="hljs-keyword "> struct</ span > {< br > Name < span class ="hljs-type "> string</ span > < br > Age < span class ="hljs-type "> int</ span > < br > Gender < span class ="hljs-type "> string</ span > < br > Grade < span class ="hljs-type "> string</ span > < br > }< br > </ code > </ pre > </ td > </ tr > </ table > </ figure >
395400
396401< p > 运行结果:</ p >
397-
402+ < img src =" /p/9b186663/4.png " srcset =" /img/loading.gif " lazyload class ="" title =" 运行结果 " >
398403
399404< p > 同样可以使用结构体指针加< code > .</ code > 操作符修改成员变量。</ p >
400405
0 commit comments