Golang 구조체 및 맵

6377 단어 golang

Golang


문서 목록

  • Golang
  • 1 struct
  • 2 map
  • 3 struct 보충
  • 1 struct


    Golang에는 대상이 없지만 대상을 향한 사상, 계승, 다태, 봉인된 사상이 있다.그러나class가 부족합니다. 대신 struct (구조체) 가 있습니다.
    다음은 몇 가지 구조체의 초기화 방법 4가지 방법입니다.
    package main
    import "fmt"
    //  -  
    type cat struct{
    	name string
    	age int
    	sex string
    }
    
    func main(){
    
    	var cat1 cat
    	cat1.name = " "
    	cat1.age = 12
    	cat1.sex = " "
    	fmt.Println(cat1)
    }
    
    type Person struct{
    	Name string
    	Age int
    }
    func main(){
    
    	//2.
    	P := Person{}
    	P.Name = "tom"
    	P.Age = 15
    	fmt.Println(P)
    
    	p2:=Person{"marry",20}
    	fmt.Println(p2)
    
    	//3
    	var p3 *Person = new(Person)
    	(*p3).Name = "city"
    	(*p3).Age = 16
    	p3.Name = "kinh"
    	fmt.Println(p3)
    	fmt.Println(*p3)
    
    	//4.
    	var p4 *Person = &Person{}
    	(*p4).Name = "scott"
    	(*p4).Age = 29
    	p4.Age = 24
    	fmt.Println(p4)
    	fmt.Println(*p4)
    }
    
    강조1은 구조체의 주소가 연속적으로 분포되어 있기 때문에 많은 프로그래밍 고수들이 프로그래밍을 하지 않아도 주소를 얻을 수 있고 오히려 주소를 통해 이 특성을 연속할 수 있다.다음 구조체의 주소를 얻다.
    type Point struct{
    	x int 
    	y int
    }
    type Rect struct{
    	leftUp, rightDown Point
    }
    func main(){
    
    	r1 := Rect{Point{1,2},Point{4,5}}
    
    	fmt.Println(&r1.leftUp.x,&r1.leftUp.y)
    	fmt.Println(&r1.rightDown.x,&r1.rightDown.y)
    }
    
    결과 0xc042008340 0xc042008348 0xc042008350 0xc042008358
    강조2 구조체가 서로 값을 변환하려면 두 기구체의 필드 이름이 같고 유형이 같으며 수량이 같아야 한다
    package main
    import "fmt"
    
    type A struct {
    	num int
    }
    type B struct{
    	num int 
    }
    func main(){
    
    	var a A
    	var b B
    	// 
    	// 
    	// 
    	// 
    	a = A(b)
    	fmt.Println(a,b)
    }
    
    
    결과 {0} {0}
    강조3 만약에 구조체가 명칭을 바꾸면 강전해야 한다. 왜냐하면 명칭을 바꾸면 골랑이 서로 다른 구조체에 해당하기 때문이다.
    type student struct{
    	name string
    	age int
    
    }
    type stu student// 
    func main(){
    	var student1 student
    	var student2 stu
    	// 
    	// 
    	student1 = student(student2)
    	fmt.Println(student1,student2)
    	
    }
    
    4 태그의 개념을 강조: 하나의 속성을 하나의 이름으로 바꾸는 것과 같다. 예를 들어 어떤 프로그래머들은 소문자로 쉽게 이름을 바꾸고 Golang에서 소문자로 private를 대표하기 때문에 태그로 변환할 수 있다.
    package main
    import "fmt"
    import "encoding/json"
    type Master struct{
    	Name string `json:"name"`
    	Age int `json:"age"`
    	Skill string  `json:"skill"`
    }
    func main(){
    	m1 := Master{" ",14," "}
    	jsonstr, err := json.Marshal(m1)
    	if err != nil{
    		fmt.Println("No")
    	}
    	fmt.Println(jsonstr)
    	fmt.Println(string(jsonstr))
    }
    
    결과 [123 34 110 97 109 101 34 58 34 229 173 153 130 159 231 169 186 34 44 34 34 97 103 101 34 58 52 44 34 115 105 108 108 108 34 34 231 129 171 132 176 34 125] {"name": "손오공", "age":14, "skill": "화염"}

    2 map


    맵은 Golang에도 있고 키 값이 맞는 형식입니다.
    맵 초기화
    package main
    import "fmt"
    func main(){
    	var a map[string]string
    	// make 
    	//Golang map key 
    	//key 
    	a = make(map[string]string,10)
    	a["1"] = " "
    	fmt.Println(a)
    }
    
    func main(){
    	var a map[string]string
    	//1,
    	a = make(map[string]string,10)
    	a["1"] = "tengxun"
    	a["2"] = "shanghai"
    	fmt.Println(a)
    
    	//2
    	citis := make(map[string]string)
    	citis["1"] = "beijing"
    	citis["2"] = "shanghai"
    	fmt.Println(citis)
    
    	//3
    	var heros map[string]string = map[string]string{
    		"1":"wuyong",
    		"2":"lujingyi",
    	}
    	fmt.Println(heros)
    
    	hero := map[string]string{
    		"1":"ateman",
    		"2":"dahai",
    	}
    	fmt.Println(hero)
    }
    
    
    결과 맵[2:shanghai 1:tengxun] 맵[1:beijing 2:shanghai] 맵[1:wuyong 2:lujingyi] 맵[1:ateman 2:dahai]
    func main(){
    	//map :
    	student := make(map[string]map[string]string)
    	student["1"] = make(map[string]string,2)
    	student["1"]["name"] = "tom"
    	student["1"]["sex"] = " "
    	student["1"]["address"] = "123"
    
    	student["2"] = make(map[string]string)
    	student["2"]["name"] = "jerry"
    	student["2"]["sex"] = "nv"
    	fmt.Println(student["1"],student["2"])
    }
    
    결과 맵[name:tom sex:남address:123] 맵[name:jerry sex:nv]
    map의 삭제 수정 작업
    func main(){
    	//map 
    	var heros map[string]string
    	heros = make(map[string]string)
    	heros["1"] = "1"
    	heros["2"] = "2"
    	fmt.Println(heros)
    	heros["3"] = "3"
    	fmt.Println(heros)
    
    	// 
    	// 
    	delete(heros,"1")
    	fmt.Println(heros)
    
    	// 
    	//ok , true false
    	//val value
    	val, ok := heros["1"]
    	if ok {
    		fmt.Println(val)
    	}else{
    		fmt.Println("No")
    	}
    
    	// heros 
    	heros = make(map[string]string)
    	fmt.Println(heros)
    }
    
    결과 맵[1:1 2:2] 맵[1:1 2:2 3:3] 맵[2:2 3:3] No 맵[]
    map의 역주행 일반 단위가 맞습니다.
    func main(){
    	//map : for-range 
    	cites := make(map[int]int)
    	cites[1] = 1
    	cites[2] = 3
    	cites[3] = 5
    	// :
    	for k,v := range cites{
    		fmt.Println(k,v)
    	}
    	//len : 
    	fmt.Println(len(cites))
    	//3 
    }
    
    결과 3
    맵의 정렬 가능 Golang에서 맵의 정렬은 키의 값에 따라 정렬되지 않습니다.보통 무질서한 다음에 키 순서대로 정렬할 수 있어요.
    	//1. map key 
    	//2. 
    	//3. , key value
    
    func main(){
    	// key 
    	//1. map key 
    	//2. 
    	//3. , key value
    	map1 := make(map[int]int,10)
    	map1[1] = 10
    	map1[2] = 20
    	map1[4] = 20
    	var keys []int
    	for k,_ := range map1{
    		keys = append(keys,k)
    	}
    	sort.Ints(keys)
    	fmt.Println(keys)
    
    	for _,k := range keys{
    		fmt.Println(map1[k])
    	}
    }
    

    3 struct 보충


    구조체를 초기화하고 값을 지정합니다.
    package main
    import "fmt"
    
    type student struct{
    	name string
    	age int
    }
    func main(){
    	// 
    	//1.
    	var student0 = student{"xiaom",15}
    	fmt.Println(student0)
    	student1 :=student{"wangwu",20}
    	fmt.Println(student1)
    
    	//2.
    	var student2 = student{
    		name : "wuwu",
    		age : 19,
    	}
    	fmt.Println(student2)
    	student3 := student{
    		name : "shenwu",
    		age : 22,
    	}
    	fmt.Println(student3)
    
    	//3.
    	var student4 = &student{" ",23}
    	fmt.Println(*student4)
    	student5 := &student{" ",25}
    	fmt.Println(*student5)
    	//4
    	var student6 = &student{
    		name : "xing",
    		age : 25,
    	}
    	fmt.Println(*student6)
    	student7 := &student{
    		name : "baba",
    		age : 23,
    	}
    	fmt.Println(*student7)
    }
    

    좋은 웹페이지 즐겨찾기