go语言结构体,函数与方法

一、定义结构体

go语言自定义数据类型使用 type ,定义结构体使用 type + stuct 关键字

package main

import (
    "fmt"
)

 type Cat struct {
    Name string
    Age int8
    Color string
 }

 func main(){
    var cat1 Cat
    cat1.Name = "花花"
    cat1.Age = 1
    cat1.Color = "yellow"

    fmt.Println(cat1)
 }

执行结果:

 二、结构体转json

使用 encoding/json 内置库

package main

import (
    "fmt"
    "encoding/json"
)

 type Cat struct {
    Name string
    Age int8
    Color string
 }

 func main(){
    var cat1 Cat
    cat1.Name = "花花"
    cat1.Age = 1
    cat1.Color = "yellow"

    data, _ := json.Marshal(cat1)
    fmt.Println(string(data))
 }

执行结果:

 json字符串中的 key 首字母大写改为小写或其他带有下滑线的名字(给结构体的字段名,打标签

package main

import (
    "fmt"
    "encoding/json"
)

 type Cat struct {
    Name string `json:"name"`
    Age int8 `json:"age"`
    Color string `json:"color"`
 }

 func main(){
    var cat1 Cat
    cat1.Name = "花花"
    cat1.Age = 1
    cat1.Color = "yellow"

    data, _ := json.Marshal(cat1)
    fmt.Println(string(data))
 }

执行结果:

 三、函数与方法

golang 中的方法是作用在指定自定义数据类型上的(通过type字段定义的自定义数据类型,都可以有自己的方法,而不仅仅是struct;类似于java中类里面的方法);而go中的函数区别在于,函数没有与特定的数据类型绑定在一起。

package main

import (
    "fmt"
)

 type Cat struct {
    Name string `json:"name"`
    Age int8 `json:"age"`
    Color string `json:"color"`
 }

 // 定义一个函数,与结构体无关联
 func PrintCatName(){
    fmt.Println("小咪")
 }
// 定义了一个方法,作用在了Cat结构体上
 func(cat Cat) PrintCatNameT(){
    fmt.Println(cat.Name)
 }


 func main(){
    var cat1 Cat
    cat1.Name = "花花"
    cat1.Age = 1
    cat1.Color = "yellow"

    PrintCatName()
    cat1.PrintCatNameT()
 }

 

posted @ 2024-01-07 16:13  远洪  阅读(55)  评论(0编辑  收藏  举报