Golang:Golang结构体声明与使用

Golang结构体声明与使用

一.struct结构体特征

  1. go中的结构体有点类似于其他编程语言中的对象
  2. go中的结构体可以用.语法访问里面的属性/字段
  3. go中的结构体别名和属性/字段首字母需大写否则别的包无法访问此结构体类似于private和public
  4. go中的结构体属性/字段重复赋值会覆盖之前的值
  5. go中的结构体是值类型,不是引用类型
  6. go中的结构体如果在使用json转义的情况下,想要发送给客户端的属性/字段不是大写必须加上tag标签如json:xxx属性/字段名

二.struct结构体声明和使用

  1. 结构体声明的四种方法
    Golang:Golang结构体声明与使用_第1张图片
  2. 结构体是值类型,传入函数中改变结构体不会影响外部的结构体,如果要改变外部结构体则需要传入地址
    1>这里并不会修改到名称Golang:Golang结构体声明与使用_第2张图片
    2>传入地址后可以修改名称Golang:Golang结构体声明与使用_第3张图片
  3. go中的结构体如果在使用json转义的情况下,想要发送给客户端的属性/字段不是大写必须加上tag标签
    1>这里没有使用tag标签字段名称都是大写Golang:Golang结构体声明与使用_第4张图片
    2>这里添加tag标签Golang:Golang结构体声明与使用_第5张图片
    3>转成json后字段名变成了小写Golang:Golang结构体声明与使用_第6张图片

三.代码块

package main

import (
	"encoding/json"
	"fmt"
)

// 妖怪结构体
type Monster struct {
	Name string `json:"name"`
	Age  int	`json:"age"`
	Arms string `json:"arms"`
}
// 改变结构体函数
func changeStruct(s *Monster) {
	s.Name = "修改你的名称"
}

func main() {
	// 结构体声明1
	monster := Monster{"孙悟空", 500, "金箍棒"}
	fmt.Println(monster)
	// 结构体声明2
	var monster1 Monster
	monster1.Name = "猪八戒"
	monster1.Age  = 500
	monster1.Arms = "九齿钉耙"
	fmt.Println(monster1)
	// 结构体声明3
	var monster2 Monster = Monster{}
	monster2.Name = "红孩儿"
	monster2.Age  = 200
	monster2.Arms = "火尖枪"
	fmt.Println(monster2)
	// 结构体声明4
	var monster3 Monster = Monster{"铁扇公主", 400, "芭蕉扇"}
	fmt.Println(monster3)
	// 看看是否改变结构体的name
	changeStruct(&monster3)
	fmt.Println(monster3)

	// 结构体转json字符串
	jsonStr, err := json.Marshal(monster2)
	if err != nil {
		panic("json转换失败")
	}
	fmt.Println(string(jsonStr))
}

你可能感兴趣的:(Golang,golang,开发语言,后端)