GO语言struct语法

struct

-使用type<Name>struct{}定义结构,名称遵循可见性规则

-支持指向自身的指针类型成员

-支持匿名结构、可作用成员或定义成员变量

-匿名结构也可以用于MAP的值

-可以使用字面值对结构进行初始化

-允许值通过指针来读写结构成员

-相同类型的成员可进行直接拷贝赋值

-支持==与!=比较运算符,不支持>或<

-支持匿名字段,本质上是定义了以某个类型名称的字段

-嵌入结构作为匿名字段看起来像继承、但不是继承

-可以使用匿名字段的指针

package main

import "fmt"

type test struct{}

func main(){

a :=test{}

fmt.Println(a)

}

package main
import "fmt"
type test struct {
    Name    string
    Age     int
    Address string
}
func main() {
    a := test{}
    a.Name = "YH" //值初始化,与其他语言的class类似,GO语言没有指针运算,
    a.Age = 18
    fmt.Printf("我叫%s, 今年年方%d\n", a.Name, a.Age)
    b := test{
        Name:    "YH",
        Age:     19,
        Address: "Japan",
    }
    fmt.Printf("我叫%s, 今年年方%d,我是%s\n人", b.Name, b.Age, b.Address)
}

//匿名结构

package main
import "fmt"
type test struct {
    Name    string
    Age     int
    Address string
    Contact struct {
        User_phont string
        City       string
    }
}
func main() {
    a := test{Name: "yh", Age: 19, Address: "Bj"}
    a.Contact.User_phont = "1234567890"
    a.Contact.City = "haidian"
    fmt.Println(a)
}

package main

import "fmt"

func main() {

a := struct {

Name string

Age  int

}{

Name: "aa",

Age:  19,

}

fmt.Println(a)

}

package main

import "fmt"

type test struct{

Name string

Age int

}

func main(){

a :=test{

Name:"coolqi",  //设置字面值初始化

}

a.Age=19//

fmt.Println(a)

}

package main

import "fmt"

type humen struct{

Sex int

}

type Teacher struct{

humen

Name string

Age int

}

type Student struct{

humen    //这里的嵌入式是一个匿名的字段,本质上是将结构的名称作为字段名称,若需要作为字面值初始化,需要做humen:humen{Sex:1}

Name string

Age int

}

func main(){

a :=Teacher{Name:"joe",Age:19,humen:humen{Sex:1}}//在嵌入式结构中,

fmt.Println(a)

}

时间: 2024-12-21 08:52:54

GO语言struct语法的相关文章

C语言基本语法

C语言基本语法 #include <reg52.h>          //包含文件 #include <stdio.h> void main(void)                //主函数 { SCON=0x52; TMOD=0x20; TH1=0xf3; TR1=1;                        //此行及以上 3 行为PRINTF 函数所必须 printf("Hello I am KEIL. \n");               

嵌入式linux C++语言(二)——C++对C语言基础语法的扩展

嵌入式linux C++语言(二)--C++对C语言基础语法的扩展 C++是基于C语言扩展发展而来的面向对象的程序设计语言,本文将主要讨论C++语言基于C语言扩展的方面. 一.类型增强 1.类型检查更严格 在C语言中: const int a = 100; int *p = &a; 在C++语言中: const int a = 100;//必须在定义的时候初始化 const int *p = &a; 在C++语言中不能隐式转换数据类型. error: invalid conversion

Go 语言基础语法

Go 语言基础语法 上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法. Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号.如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!") 6 个标记是(每行一个): 1. fmt 2. . 3. Println 4. ( 5. "Hello, World!" 6. ) 行分隔符 在 Go 程序中,一行代表一个语句

黑马程序员 ---- C 语言基础语法

C 语言基础语法 C程序是由函数组成. C程序的入口是一个名字叫做 main 的函数,简称main函数. 不管程序中有多少函数,都是先执行main函数. 1 #include <stdio.h> 2 3 int main(void) 4 5 { 6 7 return 0; 8 9 } 1.编写 2.编译 cc -c 文件名.c 生成 .o 文件 3.链接 cc 文件名.o      // 2.3结合在一起:  cc 文件名.c -o 文件名 4.运行 ./a.out // ./文件名 C语言中

C++语言学习(二)——C++对C语言基础语法的扩展

C++语言学习(二)--C++对C语言基础语法的扩展 C++是基于C语言扩展发展而来的面向对象的程序设计语言,本文将主要讨论C++语言基于C语言扩展的方面. 一.实用性增强 C语言中变量的定义必须在作用域开始的位置进行定义. #include <stdio.h> int main(int argc, char *argv[]) { int i;//定义变量 int j; //使用变量 for(i = 0; i < 10; i++) { for(j = 0; j < 10; j++)

思考:为什么每一种开发语言的语法都是不一样的呢(语法设置的不一样的出发点是基于什么考虑)?如果设置成一样有什么不可行的吗?

思考:为什么每一种开发语言的语法都是不一样的呢(语法设置的不一样的出发点是基于什么考虑)?如果设置成一样有什么不可行的吗?每一种开发语言中有哪些语法是一样的?可以设置成不一样吗?语法不一样:比如go中定义结构体语法如下:type struct_variable_type struct { age int ; }(可能觉得type和struct两个关键字之间放结构体名称比较合理,两个中间夹一个)而c语言中定义结构体如下:typedef struct struct_variable_type { i

2. Go 语言基本语法

Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那么本章的内容阅读起来将会非常轻松:如果读者没有C语言基础也没关系,因为本章内容非常简单易懂. Go语言变量的声明(使用var关键字) Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性.在数学概念中,变量表示没有固定值且可改变的数.但从计算机系统实现角

Java语言基本语法

Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成,且第一个字符不能是数字: java语言区分大小写: 标志符命名规则:类名首字母大写,变量名和方法名采用驼峰标志法,常量全大写,多个单词之间用“_”隔开,包名全小写: 关键字 在java语言中,有一些专门的词汇已经被赋予了特殊的含义,不能再使用这些词汇来命名标识符,这些专有词汇,称为“关键字”: j

201671010139 2016-2017-2 JAVA 和C语言的语法区别

java和c语言的语法上有很多相似的地方,但也有很多不同. 一,在初始值的区别 在C语言中,是可以不初始化使用的 而在JAVA中,是必须初始化值的 二,在抽象方法或抽象类的区别 C语言的对等语法是"纯虚函数"和"抽象类" Java使用abstract关键字修饰抽象方法或抽象类,final类不能被继承 都使用抽象类作为继承层次中的基类,提供一般概念,由子类实现其抽象方法,且抽象类都不能被直接实例化为对象 E.super关键字的区别 JAVA super关键字,指代父类