golang 에서 builtin 패키지 설명

6600 단어 golang
builtin 패 키 지 는 go 의 사전 성명 정의 입 니 다. go 언어 에서 자주 사용 되 는 여러 가지 유형 과 방법 설명 을 포함 하여 변수 와 상수 두 부분 을 포함 합 니 다. 상세 한 설명 은 builtin. go 파일 에서 링크 입 니 다.http://golang.org/src/builtin/builtin.go
우선 골 랑 의 상수 부터 소개 해 드 리 겠 습 니 다.
상수:
const (
        true  = 0 == 0 // Untyped bool.
        false = 0 != 0 // Untyped bool.
)
true 와 false 는 두 종류의 bool 값 입 니 다.
const iota = 0 // Untyped int.   int

iota 는 사전 성명 표시 자 입 니 다. 상수 성명 에 만 사용 할 수 있 고 그 값 은 0 부터 시작 합 니 다. const 에 한 줄 을 추가 할 때마다 iota 는 한 번 씩 계산 합 니 다. 즉, iota 는 1 을 증가 합 니 다. (이런 점 에서 iota 는 const 블록 중의 줄 색인, 줄 수 를 기록 할 수 있 습 니 다) 그 값 은 다음 const 키 워드 를 만 날 때 까지 1 을 증가 합 니 다. 그 값 은 0 으로 재 설정 되 었 습 니 다.
1 상수 성명 에서 상수 가 할당 되 지 않 으 면 그 는 이전 줄 의 할당 값 과 같 습 니 다. 이것 은 여러 상수 의 값 이 같 으 면 상수 의 할당 값 을 1 개 만 주 고 다른 상수 가 그의 뒤 를 따 르 면 됩 니 다.
package main
import (
	"fmt"
)
const (
	a = iota   //iota      0
	b = 100
	c      //c          
	d = iota   //iota     1,      3
)
func main() {
	fmt.Println(a, b, c, d)
}
    : 0 100 100 3

2. 변수 성명 에서 한 줄 을 추가 할 때마다 iota 값 은 1 을 추가 합 니 다. 여러 변수 가 한 줄 에서 설명 하면 iota 값 은 1 번 만 증가 합 니 다.
package main

import (
	"fmt"
)
const (
	a    = iota
	b, c = iota, iota
	d    = iota
)
func main() {
	fmt.Println(a, b, c, d)
}
    :0 1 1 2

3iota 에서 다음 const 키 워드 를 만 났 습 니 다. 그 값 은 0 으로 다시 할당 되 었 습 니 다.
package main

import (
	"fmt"
)

const (
	a    = iota
	b, c = iota, iota
	d    = iota
)
const e = iota //    const   ,iota   0

func main() {
	fmt.Println(a, b, c, d, e)
}
    :0 1 1 2 0

4 상수 정의 방식: const 이름 [데이터 형식] = 표현 식, 그 중에서 데이터 형식 은 있어 도 되 고 없어 도 되 지만 데이터 형식 을 사용 할 때 반드시 주의해 야 합 니 다. 두 개의 띠 유형 상수 가 같은 줄 에 쓰 여 서 는 안 되 고 띠 유형 상수 가 반드시 값 을 부여 해 야 하 며 비어 있 으 면 안 됩 니 다. 다음 과 같 습 니 다.
const (
	a    = 1
     d    int   //  
	b int, c int = 1, 1 //  

)
정확 한 표기 법 은 다음 과 같다.
const (
	a    int = 1
	d    int
	b, c = 1, 1
)
따라서 const 상수 를 정의 할 때 상수 형식 을 특별히 강조 하지 않 으 면 데이터 형식 을 가지 고 있 지 않 을 수 있 습 니 다.
변수:
func append(slice []Type, elems ...Type) []Type
그 사용 은 두 가지 방식 이 있다.
slice = append(slice, elem1, elem2)  //   slice        ,         slice  ,     
slice = append(slice, anotherSlice...)  //       slice   slice  ,       anotherSlice           slice ,        .
특수 한 상황 으로 문자열 을 바이트 배열 에 추가 한 후 합 법 적 입 니 다.
package main

import (
	"fmt"
)

func main() {
	slice := append([]byte("hello "), "world"...)  //      ,       ,   go []byte string          .
	fmt.Println(string(slice))
}
    :hello world

func len(v Type) int
len () 은 go 에서 사용 빈도 가 비교적 높 은 함수 로 Type v 의 length 를 되 돌려 줍 니 다. 해당 하 는 유형 과 되 돌아 오 는 값 은 다음 과 같 습 니 다.
  :    
    :    
slice/map:slice   map     
string:       
channel:       

func cap(v Type) int
cap () 는 용기 의 용량 을 되 돌려 줍 니 다. 때로는 len () 과 되 돌아 오 는 값 이 다 릅 니 다. 해당 하 는 유형 과 되 돌아 오 는 상황 은 다음 과 같 습 니 다.
  :    
    :    
slice:slice             
channel:  channel      
비 교 를 통 해 알 수 있 듯 이 배열 의 유형 과 배열 지침 에 직면 할 때 len 과 cap 의 값 은 모두 배열 의 길이 이다.
공통점: cap 는 map, string 형식 을 지원 하지 않 습 니 다. slice 와 channel 에서 가 져 온 값 도 다 릅 니 다. len 은 기 존 값 을 얻 었 고 cap 는 최대 값 을 얻 었 습 니 다. 예 는 다음 과 같 습 니 다.
package main

import (
	"fmt"
)

func main() {

	a := make(chan int, 10)
	fmt.Println(cap(a))        //10
	fmt.Println(len(a))        //0
	b := make([]int, 2)
	b = append(b, 1)
	fmt.Println(len(b))        //3
	fmt.Println(cap(b))      //4
}
    :10 0 3 4 

func close(c chan
close () 는 채널 을 닫 는 데 만 사용 할 수 있 으 며, 송신 단 에서 만 닫 을 수 있 으 며, 수신 단 에서 닫 을 수 없습니다. 구체 적 인 참조http://blog.csdn.net/chenbaoke/article/details/41647865
func complex(r, i FloatType) ComplexType     //두 개의 부동 소수점 유형 을 하나의 복수 로 바 꾸 는데, 그 중에서 실제 부분 과 허 부 두 가지 유형 은 반드시 일치 해 야 하 며, float 32 와 float 64 의 한 가지 일 수 밖 에 없다.
func imag (c Complex Type) Float Type / / 복수 의 허 부 를 가 져 옵 니 다.
func real (c Complex Type) Float Type / / 복수 의 실 부 를 가 져 옵 니 다.
package main

import (
	"fmt"
)
func main() {
	a := complex(1, 2)
	b := imag(a)
	c := real(a)
	fmt.Println(a, b, c)
}
    :(1+2i)  2  1

func copy(dst, src []Type) int
copy 는 두 개의 slice 간 의 복 제 를 실현 합 니 다. 그 중에서 복 제 된 길 이 는 dst 와 src 에서 길이 가 비교적 작은 길이 이 고 돌아 오 는 것 도 비교적 작은 길이 입 니 다. copy 과정 에서 덮어 쓸 수 있 습 니 다.
package main

import (
	"fmt"
)

func main() {

	a := make([]int, 1)
	b := []int{1, 2}
	c := copy(a, b) //  a    1,  b  a   1   1,    c     1
	fmt.Println(a, b, c)
}
    :[1] [1 2] 1

func delete(m map[Type]Type1, key Type)
map 에서 해당 요 소 를 삭제 합 니 다. 이 key 가 없 으 면 func make (Type, size Integer Type) Type 동작 을 하지 않 습 니 다.
map, slice, channel 에 만 사용 할 수 있 습 니 다.
func new (Type) * Type / / 대상 을 초기 화하 고 대상 을 가리 키 는 지침 을 되 돌려 줍 니 다.
func panic (v interface {}) / / goroutine 실행 을 중단 하고 defer 함 수 를 먼저 실행 합 니 다. defer 함수 가 실 행 될 때 오류 정 보 를 panic 호출 자 에 게 panic 관련 정 보 를 전달 합 니 다. func recover () interface {}  //defer 함수 에서 recover 를 통 해 panic 호출 된 오류 정 보 를 얻 고 정상 적 인 실행 으로 돌아 갑 니 다. panic 이 없 으 면 recover 는 nil 로 돌아 갑 니 다.
func print(args ...Type) func println(args ...Type)    //사용 방법 type ComplexType    //모든 복수 형식 complex 64 또는 complex 128 type Float Type / / 모든 부동 소수점 유형 표시: float 32 또는 float 64 type Integer Type type type type type type type type type type type type 1 type bool type byte / 등가 와 uinit 8, 습관 적 으로 바이트 값 과 8 비트 기호 없 는 정수 type complex 128 type complex 64 type error type float 32 type float 64 typeint / / 기호 정형, 크기 는 기계 버스 수량 과 관련 이 있 지만, int 32 또는 int 64 의 별명 이 아 닌 구체 적 인 유형 입 니 다. type int 16 type int 32 type int 64 type int 8 type rune / int 32 별명 은 문자 값 과 정수 값 type string / / 8 바이트 의 문자열 집합 을 습관 적 으로 구분 합 니 다. string 은비어 있 지만 nil 이 될 수 없습니다. string 을 수정 할 수 없습니다. type uint type uint 16 type uint 32 type uint 64 type uint 8 type uintptr / / 정수 형식 입 니 다. 크기 는 포인터 의 비트 모드 를 수용 할 수 있 습 니 다.
var nil Type      //nil      ,channel,  ,interface,map  slice  ,         .

참고:http://golang.org/pkg/builtin/
다음으로 전송:https://www.cnblogs.com/msnsj/p/4242580.html

좋은 웹페이지 즐겨찾기