Go语言结构体快速入门

Jaeyok · · 123 次点击 · · 开始浏览    
Golang里面没有类,用结构体实现面向对象的编程特性。非常简洁。没有extends,通过匿名字段来实现。Golang中面向接口编程是非常重要的特性。
package main

import (
    "fmt"
    "encoding/json"
)
func main() {
    //结构体的定义
type cat struct {
    Name string
    Age int
    hobby string
}
    //map的key为学号,map的值为结构体,包含名字,年龄和地址。
var cat1 cat
cat1.Name="love"
cat1.Age =18
fmt.Println(cat1)

//指针,slice,map需要先Make作为field使用
type Person struct {
    Name string `json:"name"` //结构体的标签
    Age int       `json:"age"`
    //Scores [5]float64
    //ptr *int
    //slice []int
    //map1 map[string]string

}

var person1 Person
//person1.slice = make([]int, 10)
//person1.map1 = make(map[string]string)
fmt.Println(person1)
//方式2 推荐
person2 := Person{"tom", 18}
fmt.Println(person2)
//方式3 指针 底层做了优化,可以不用指针的形式
var person3 *Person = new(Person)
person3.Name = "Tom"
person3.Age = 20
fmt.Println(person3)

//方式4 可以直接赋初值,但是所有字段都要赋值
var per *Person = &Person{"marry", 60}
per.Name="da"

//指针 可以改变原变量数值
var p1 Person = Person{"marry", 60}
p1.Name = "Tom"

var p2 *Person = &p1

p2.Name="Love"
fmt.Println("P1:",p1)

//使用tag json序列化 使用json包 结构体field必须大写
jsonStr,err := json.Marshal(person2)
if err != nil{
    fmt.Println("出错")
}
fmt.Println(string(jsonStr))
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Jaeyok

查看原文:Go语言结构体快速入门

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459

123 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传