KoreanHackerTeam
Moderator
참조 (Ctrl C+V) https://www.kancloud.cn/kancloud/the-way-to-go/
연구에 따르면, 핵심 요점 만 기록하십시오.
리눅스
freebsd
Mac OS X (Darwin이라고도 함)
현재 2 가지 버전의 컴파일러가 있습니다 : GO Native Compiler GC 및 비 천연 컴파일러 GCCGO. 두 컴파일러 모두 UNIX와 같은 시스템에서 작동합니다. 그중에서도 컴파일러의 GC 버전은 Windows 플랫폼으로 포팅되어 기본 배포에 통합되었습니다. MINGW를 설치하여 Windows 플랫폼의 GCC 컴파일러를 사용할 수도 있습니다. 두 컴파일러는 단일 채널 형태로 작동합니다.
다음 플랫폼에서 Go 1.4 소스 코드 및 이진 파일을 얻을 수 있습니다.
Linux 2.6+ : AMD64, 386 및 ARM 아키텍처
Mac OS X (Snow Leopard + Lion) : AMD64 및 386 아키텍처
Windows 2000+ : AMD64 및 386 아키텍처
$GOARCH은 대상 기계의 프로세서 아키텍처를 나타내며 그 값은 386, AMD64 또는 ARM 일 수 있습니다.
$GOOS은 대상 기계의 운영 체제를 나타내며 그 값은 Darwin, FreeBSD, Linux 또는 Windows 일 수 있습니다.
$GOBIN은 컴파일러 및 링커의 설치 위치를 나타냅니다. 기본값은 $ goroot/bin입니다. Go 1.0.3 이상을 사용하는 경우 일반적으로 그 값을 비어 놓을 수 있습니다. GO는 위에서 언급 한 기본값을 사용합니다.
/DOC : 샘플 프로그램, 코드 도구, 로컬 문서 등이 포함되어 있습니다.
/lib : 문서 템플릿이 포함되어 있습니다
/MISC : GO 편집자 지원 및 CGO 예제와 관련된 구성 파일이 포함되어 있습니다.
/os_arch : 표준 라이브러리의 패키지가 포함 된 객체 파일 (.a)
/SRC : 소스 코드 빌드 스크립트 및 표준 라이브러리를 포함하는 패키지에 대한 소스 코드 완전한 소스 코드 (GO는 오픈 소스 언어입니다)
/src/cmd : Go 및 c
fmt.printf의 다음 지정자를 사용하여 변수에 대한 관련 정보를 인쇄합니다. %+V 인쇄 필드를 포함한 인스턴스의 전체 정보
%#v 인쇄 필드 및 자격을 갖춘 유형 이름을 포함한 인스턴스에 대한 완전한 정보
%t 유형에 대한 완전한 설명을 인쇄합니다
공황 진술 (섹션 13.2)을 사용하여 스택 추적 정보를 얻으십시오 (당황 할 때까지 모든 호출 함수 목록).
키워드를 사용하여 코드 실행 프로세스 (섹션 6.4)를 추적하십시오.
프로그램이 원활하게 실행되고 성공적으로 종료되면 코드 0으로 종료 된 프로그램이 콘솔에서 출력됩니다.
Go 1부터 시작하여 응용 프로그램 빌드에 제공되는보다 편리한 도구를 사용하십시오.
컴파일 빌드 및 자체 패키지 및 종속성을 설치하십시오.
자체 패키지 및 종속성 패키지를 설치하십시오
Package Main은 독립적으로 실행할 수있는 프로그램을 의미하며 각 GO 응용 프로그램에는 Main이라는 패키지가 포함되어 있습니다.
모든 패키지 이름은小写字母을 사용해야합니다.
1func sum (a, b int) int {return a + b}
구조화 (복합재) : 구조, 배열, 슬라이스, 맵, 채널
구조화 된 유형은 실제 값이 없으며 NIL을 기본값으로 사용합니다.
1ValueofTypeb=typeB (ValueOfTypea)
1234567891011121314151617var 식별자 유형 다중 줄은 변수 var의 값을 기준으로 그들의 유형을 자동으로 추론합니다 (a=15 b=false str='go는 세계에 인사합니다! 첫 번째 단어는 소문자이고 각 새 단어의 첫 글자는 다음과 같은 대문자입니다.
변수 (상수, 유형 또는 함수)는 프로그램에서 특정 행동 범위를 가지며 범위라고합니다.
변수가命名规则으로 선언 된 경우函数体外으로 간주되며全局变量으로 사용할 수 있으며, 어떤 소스 파일이 호출되는지에 관계없이 변수를 호출 할 수 있습니다.
整个包、外部包(被导出后)으로 선언 된 변수는函数体内이라고하며 그 범위는局部变量에 불과하며 매개 변수 및 반환 값 변수는 로컬 변수이기도합니다.
123fmt.print ( 'hello:', 23)는 출력 : hello: 23
인공적으로 호출 할 수는 없지만 각 패키지가 초기화 된 후에 자동으로 실행되며 실행 우선 순위는 기본 기능보다 높습니다.
소스 파일에는 하나의 init 함수 만 포함 할 수 있습니다. 초기화는 항상 단일 스레드에서 실행되며 패키지의 종속성 순서로 실행됩니다.
init.go
123456789package transimport 'math'var pi float64func init () {pi=4 * math.atan (1) //init () 함수는 pi} user_init.go 中导入了包trans (在相同的路径中在相同的路径中) 并且使用到了变量pi를 계산합니다.
123456789101112Package Mainimport ( 'fmt' './trans') Var twopi=2*trans.pifunc main () {fmt.printf ('2*pi=%g \ n ', twopi) //2*pi=6.283185307179586} :-1010-59 거짓
函数体内정수 INT 및 플로팅 포인트 플로트
布尔类型 bool:5,%d 用于格式化整数用于格式化整数(%x 和%x%x 用于格式化16 进制表示的数字进制表示的数字)) 用于格式化))) 用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型;%f 输出浮点数,%e 输出科学计数表示法) 马云惹不起马云%0d 用于规定输出定长的整数用于规定输出定长的整数, 其中开头的数字0 是必须的。
数字类型:a32bitint=int32 (a32float)가 변환되면 소수점 이후의 숫자는 폐기됩니다.
格式化说明符:GO에는 다음의 복수형이 있습니다.
12 Complex64 (32 비트 실제 및 가상) Complex128 (64 비트 실제 및 가상)数字值转换:단지 연산자 : 비트 보완 ^, 비트 왼쪽 시프트, 비트 오른쪽 시프트
바이너리 연산자 : 비트와 비트 또는 |
논리 연산자 :==,=,=,=
산술 연산자 : 정수 및 부동 소수점 숫자에 사용할 수있는 공통 바이너리 연산자는 +, -, *및 /입니다.
운영자 및 우선 순위 :
일부 연산자는 우선 순위가 높고 이진 연산자의 작동 방향은 왼쪽에서 오른쪽으로입니다. 다음 표는 모든 연산자와 우선 순위를 위에서 아래로 위, 위, 하단으로 나열하며, 우선 순위가 높음에서 낮은 곳에서 낮게 나타납니다.
12345678 우선 순위 운영자 7 ^! 6 */% ^ 5 + - | ^ 4==!===3-2 1 || 물론, 괄호를 사용하여 특정 표현식의 전반적인 운영 우선 순위를 일시적으로 증가시킬 수 있습니다.
复数:1 타입 TZ INT位运算:char.go
12345678910111213var ch int='\ u0041'var ch2 int='\ u03b2'var ch3 int='\ u00101234'fmt.printf (' %d- %d- %d- %d \ n ', ch2, ch3) //integerfmt.printf (' %c - %c - %c - %c - %c - %c - %c - %c - %c w. ch2, ch3) //charac 101234U+0041 -U+03B2 -U+101234
일반 비교 연산자 (==,=,=,=,)는 메모리의 바이트에 의한 문자열의 비교를 인식합니다. 함수 len ()을 사용하여 문자열로 점유 된 바이트 길이를 얻을 수 있습니다 : Len (str).
문자열 스 플라이 싱 문자 +: 두 문자열 S1과 S2는 S :=S1 +S2, S +='world'로 함께 스 플라이싱 할 수 있습니다.
문자열 설명 :
이 클래스 문자열은 이중 인용문으로 동봉되며 관련 탈출 문자는 다음을 포함하여 대체됩니다.
\ n : 라인 브레이크
\ r : 캐리지 리턴
\ t : 탭 키
\ u 또는 \ u : 유니 코드 문자
\\ : 백 슬래시 자체
비 응답 문자열 :
이 클래스의 문자열은 백틱으로 둘러싸여 있으며 예를 들어 라인 브레이크를 지원합니다.
1 '이것은 원시 문자열입니다 \ n은 그대로 출력됩니다.
地址해당 값의 메모리 주소를 가리키고 32 비트 기계에서 4 바이트를, 64 비트 기계에서 8 바이트를 차지하며, 가리키는 값의 크기와 관련이 없습니다.
Go Language의 주소 문자는 사용하기 전에 사용하기 전에 해당十六进制数을 반환합니다.
포인터 유형은 * 숫자 (접두사)에서一个指针变量可以指向任何一个值的内存地址으로 선행됩니다. 여기의 숫자는 유형 체인저입니다. 포인터를 사용한 값을 참조하는 것을 간접 참조라고합니다.
포인터가变量的内存地址이후에 정의되면 그 값은 nil입니다.
포인터 변수는 일반적으로 PTR로 약식됩니다.
예 : *p에 새 값을 할당하고 변수의 자체 값을 변경하는 쇼 (여기서 문자열이 있습니다)
123456789101112131415Package Mainimport 'fmt'func main () {s :='good bye 'var p *string=s *p='ciao 'fmt.printf ('여기서는 포인터 p: %p \ n ', p) //prints 주소 fmt.printf ('with is the strint. %s \ n ', *p) //인쇄 문자열 fmt.printf ('여기에 문자열 s: %s \ n ', s) //인쇄} 출력 : 여기에 포인터 p:0x2540820은 문자열입니다 *p: ciaohere는 string s:10101010101010101010101010
Val은 항상 세트에서 해당 인덱스의 값에 복사되므로 일반적으로 읽기 전용 속성 만 있으므로 수정 된 모든 수정은 세트의 원래 값에 영향을 미치지 않습니다 (获取指针所指向的内容).
123 for pos, char :=range str {.}
나머지 루프 본체를 무시하고 다음 루프에 직접 들어가는 과정을 계속하십시오. 그러나 다음 루프는 무조건 실행되지 않습니다. 루프의 판단 조건은 여전히 실행 전에 충족되어야합니다.
i :=0의 경우 123456789Label1: i=5; i ++ {j :=0; j=5; j ++ {if j==4 {계속 label1} fmt.printf ( 'i is: %d, j is: %d \ n', i, j)}} 33330
123456789101112131415161717181920212222242522728package 'fmt'var num int=10var numx2, numx3 intfunc main () {numx2, numx3=getx2andx3 (num) printvalues (num=10, 2, output
.=30 numx2, numx3=getx2andx3_2 (num) printValues () //output : num=10, 2x num=20, 3x num=30} func printvalues () {fmt.printf ( 'num=%d, 2x num=%d, 3x num=%d \ n', numx2, numx3)} func getx2 al) (int, int) {return 2 * input, 3 * input} func getx2andx3_2 (입력 int) (x2 int, x3 int) {x2=2 * 입력 x3=3 * 입력 //return x2, x3 return}
1234567891011121314 패키지 메인
연구에 따르면, 핵심 요점 만 기록하십시오.
初始
平台与架构
Go Language Team은 다음 운영 체제를위한 컴파일러를 개발했습니다.리눅스
freebsd
Mac OS X (Darwin이라고도 함)
현재 2 가지 버전의 컴파일러가 있습니다 : GO Native Compiler GC 및 비 천연 컴파일러 GCCGO. 두 컴파일러 모두 UNIX와 같은 시스템에서 작동합니다. 그중에서도 컴파일러의 GC 버전은 Windows 플랫폼으로 포팅되어 기본 배포에 통합되었습니다. MINGW를 설치하여 Windows 플랫폼의 GCC 컴파일러를 사용할 수도 있습니다. 두 컴파일러는 단일 채널 형태로 작동합니다.
다음 플랫폼에서 Go 1.4 소스 코드 및 이진 파일을 얻을 수 있습니다.
Linux 2.6+ : AMD64, 386 및 ARM 아키텍처
Mac OS X (Snow Leopard + Lion) : AMD64 및 386 아키텍처
Windows 2000+ : AMD64 및 386 아키텍처
Go 环境变量
$GOROOT컴퓨터에 GO의 설치 위치를 나타냅니다. 그 가치는 일반적으로 $ home/go입니다. 물론 다른 곳에서 설치할 수도 있습니다.$GOARCH은 대상 기계의 프로세서 아키텍처를 나타내며 그 값은 386, AMD64 또는 ARM 일 수 있습니다.
$GOOS은 대상 기계의 운영 체제를 나타내며 그 값은 Darwin, FreeBSD, Linux 또는 Windows 일 수 있습니다.
$GOBIN은 컴파일러 및 링커의 설치 위치를 나타냅니다. 기본값은 $ goroot/bin입니다. Go 1.0.3 이상을 사용하는 경우 일반적으로 그 값을 비어 놓을 수 있습니다. GO는 위에서 언급 한 기본값을 사용합니다.
安装目录清单
/bin : 다음과 같은 실행 파일 포함 : 컴파일러, GO 도구/DOC : 샘플 프로그램, 코드 도구, 로컬 문서 등이 포함되어 있습니다.
/lib : 문서 템플릿이 포함되어 있습니다
/MISC : GO 편집자 지원 및 CGO 예제와 관련된 구성 파일이 포함되어 있습니다.
/os_arch : 표준 라이브러리의 패키지가 포함 된 객체 파일 (.a)
/SRC : 소스 코드 빌드 스크립트 및 표준 라이브러리를 포함하는 패키지에 대한 소스 코드 완전한 소스 코드 (GO는 오픈 소스 언어입니다)
/src/cmd : Go 및 c
Go调试器
인쇄 문을 사용하여 적절한 위치에서 관련 변수 (print/println 및 fmt.print/fmt.println/fmt.printf)의 값을 출력하십시오.fmt.printf의 다음 지정자를 사용하여 변수에 대한 관련 정보를 인쇄합니다. %+V 인쇄 필드를 포함한 인스턴스의 전체 정보
%#v 인쇄 필드 및 자격을 갖춘 유형 이름을 포함한 인스턴스에 대한 완전한 정보
%t 유형에 대한 완전한 설명을 인쇄합니다
공황 진술 (섹션 13.2)을 사용하여 스택 추적 정보를 얻으십시오 (당황 할 때까지 모든 호출 함수 목록).
키워드를 사용하여 코드 실행 프로세스 (섹션 6.4)를 추적하십시오.
构建并运行 Go 程序
대부분의 IDES에서는 각 프로그램이 구축되고 서식 된 소스 파일이 저장되기 전에 소스 서식 도구 GOFMT가 자동으로 호출됩니다. 빌드가 성공하면 정보가 출력되지 않습니다. 컴파일 타임 오류가 발생하면 소스 코드에서 어떤 오류가 발생했는지, 예 : 선언 및 사용되지 않음을 나타냅니다. 일반적으로 IDE에서 오류 메시지를 두 번 클릭하고 오류가 발생한 줄로 직접 이동할 수 있습니다.프로그램이 원활하게 실행되고 성공적으로 종료되면 코드 0으로 종료 된 프로그램이 콘솔에서 출력됩니다.
Go 1부터 시작하여 응용 프로그램 빌드에 제공되는보다 편리한 도구를 사용하십시오.
컴파일 빌드 및 자체 패키지 및 종속성을 설치하십시오.
자체 패키지 및 종속성 패키지를 설치하십시오
语言的核心结构与技术
基本结构和基本数据类型
hello world
123456789package mainimport ( 'fmt') func main () {fmt.println ( 'hello, world')}包的概念
패키지는 구조화 된 코드의 방법입니다. 각 프로그램은 일반적으로 Pkg에 대한 개념을 포함합니다. 다른 패키지에서 컨텐츠를 가져옵니다.Package Main은 독립적으로 실행할 수있는 프로그램을 의미하며 각 GO 응용 프로그램에는 Main이라는 패키지가 포함되어 있습니다.
모든 패키지 이름은小写字母을 사용해야합니다.
注释
//단일 줄 댓글/* xxxx */멀티 라인 코멘트函数
Brackets ()에 0 개 이상의 함수 매개 변수 (쉼표 사용, 분리)를 작성할 수 있습니다. 각 매개 변수의 이름을 따라 해당 매개 변수의 유형을 따라야합니다.1func sum (a, b int) int {return a + b}
类型
기본 유형 : int, float, bool, string구조화 (복합재) : 구조, 배열, 슬라이스, 맵, 채널
구조화 된 유형은 실제 값이 없으며 NIL을 기본값으로 사용합니다.
类型转换
유형 B=유형 B (유형 A의 값) 값1ValueofTypeb=typeB (ValueOfTypea)
常量
123456 쇠고기, 2, C="고기", 2, "Veg"Const 월요일, 화요일, 수요일, 금요일, 토요일=1, 2, 3, 4, 5, 6 개 (월요일, 화요일, 수요일, 토요일, 2, 3, 3, 토요일=4, 6). 변수, 변수 이름에 변수 유형을 배치합니다.1234567891011121314151617var 식별자 유형 다중 줄은 변수 var의 값을 기준으로 그들의 유형을 자동으로 추론합니다 (a=15 b=false str='go는 세계에 인사합니다! 첫 번째 단어는 소문자이고 각 새 단어의 첫 글자는 다음과 같은 대문자입니다.
변수 (상수, 유형 또는 함수)는 프로그램에서 특정 행동 범위를 가지며 범위라고합니다.
변수가命名规则으로 선언 된 경우函数体外으로 간주되며全局变量으로 사용할 수 있으며, 어떤 소스 파일이 호출되는지에 관계없이 변수를 호출 할 수 있습니다.
整个包、外部包(被导出后)으로 선언 된 변수는函数体内이라고하며 그 범위는局部变量에 불과하며 매개 변수 및 반환 값 변수는 로컬 변수이기도합니다.
变量
函数fmt.print 和fmt.println 会自动使用格式化标识符%v 对字符串进行格式化, 两者都会在每个参数之间自动增加空格, 而后者还会在字符串的最后加上一个换行符。 而后者还会在字符串的最后加上一个换行符。 예를 들어 :123fmt.print ( 'hello:', 23)는 출력 : hello: 23
打印
변수는 글로벌 선언뿐만 아니라 초기 기능에서 초기화 될 수 있습니다.인공적으로 호출 할 수는 없지만 각 패키지가 초기화 된 후에 자동으로 실행되며 실행 우선 순위는 기본 기능보다 높습니다.
소스 파일에는 하나의 init 함수 만 포함 할 수 있습니다. 초기화는 항상 단일 스레드에서 실행되며 패키지의 종속성 순서로 실행됩니다.
init.go
123456789package transimport 'math'var pi float64func init () {pi=4 * math.atan (1) //init () 함수는 pi} user_init.go 中导入了包trans (在相同的路径中在相同的路径中) 并且使用到了变量pi를 계산합니다.
123456789101112Package Mainimport ( 'fmt' './trans') Var twopi=2*trans.pifunc main () {fmt.printf ('2*pi=%g \ n ', twopi) //2*pi=6.283185307179586} :-1010-59 거짓
函数体内정수 INT 및 플로팅 포인트 플로트
布尔类型 bool:5,%d 用于格式化整数用于格式化整数(%x 和%x%x 用于格式化16 进制表示的数字进制表示的数字)) 用于格式化))) 用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型用于格式化浮点型;%f 输出浮点数,%e 输出科学计数表示法) 马云惹不起马云%0d 用于规定输出定长的整数用于规定输出定长的整数, 其中开头的数字0 是必须的。
数字类型:a32bitint=int32 (a32float)가 변환되면 소수점 이후의 숫자는 폐기됩니다.
格式化说明符:GO에는 다음의 복수형이 있습니다.
12 Complex64 (32 비트 실제 및 가상) Complex128 (64 비트 실제 및 가상)数字值转换:단지 연산자 : 비트 보완 ^, 비트 왼쪽 시프트, 비트 오른쪽 시프트
바이너리 연산자 : 비트와 비트 또는 |
논리 연산자 :==,=,=,=
산술 연산자 : 정수 및 부동 소수점 숫자에 사용할 수있는 공통 바이너리 연산자는 +, -, *및 /입니다.
운영자 및 우선 순위 :
일부 연산자는 우선 순위가 높고 이진 연산자의 작동 방향은 왼쪽에서 오른쪽으로입니다. 다음 표는 모든 연산자와 우선 순위를 위에서 아래로 위, 위, 하단으로 나열하며, 우선 순위가 높음에서 낮은 곳에서 낮게 나타납니다.
12345678 우선 순위 운영자 7 ^! 6 */% ^ 5 + - | ^ 4==!===3-2 1 || 물론, 괄호를 사용하여 특정 표현식의 전반적인 운영 우선 순위를 일시적으로 증가시킬 수 있습니다.
复数:1 타입 TZ INT位运算:char.go
12345678910111213var ch int='\ u0041'var ch2 int='\ u03b2'var ch3 int='\ u00101234'fmt.printf (' %d- %d- %d- %d \ n ', ch2, ch3) //integerfmt.printf (' %c - %c - %c - %c - %c - %c - %c - %c - %c w. ch2, ch3) //charac 101234U+0041 -U+03B2 -U+101234
init 函数
문자열의 0 값은 길이가 0 인 스트링, 즉 빈 문자열 ''입니다.일반 비교 연산자 (==,=,=,=,)는 메모리의 바이트에 의한 문자열의 비교를 인식합니다. 함수 len ()을 사용하여 문자열로 점유 된 바이트 길이를 얻을 수 있습니다 : Len (str).
문자열 스 플라이 싱 문자 +: 두 문자열 S1과 S2는 S :=S1 +S2, S +='world'로 함께 스 플라이싱 할 수 있습니다.
문자열 설명 :
이 클래스 문자열은 이중 인용문으로 동봉되며 관련 탈출 문자는 다음을 포함하여 대체됩니다.
\ n : 라인 브레이크
\ r : 캐리지 리턴
\ t : 탭 키
\ u 또는 \ u : 유니 코드 문자
\\ : 백 슬래시 자체
비 응답 문자열 :
이 클래스의 문자열은 백틱으로 둘러싸여 있으며 예를 들어 라인 브레이크를 지원합니다.
1 '이것은 원시 문자열입니다 \ n은 그대로 출력됩니다.
基本类型和运算符
123456789101112131415161718192021222224242627272727272727272727272727262626262627 Package Mainimport ( 'fmt' 'time') var Week Time.durationFunc Main () {t :=time.now () fmt.println (t) //e.g. 12 월 21 일 09:52:14 +0100 RST 2011 FMT.PRINTF ( '%02d.%02d.%4d \ n', T.day (), T.month (), T.year ()) //21.12.2011 t=time.now (). 08:52:14 +0000 UTC 2011 FMT.PRINTLN (TIME.NOW ()) //WED 12 월 21 일 093:52336014 +0100 RST 2011 //계산 Times: Week=60 * 24 * 7 * 1E9 //NANOSEC Week_from_now :에서 있어야합니다. T.add (주) fmt.println (Week_from_now) //wed 12 월 28 일 08:52:14 +0000 UTC 2011 //포맷 Times: Fmt.println (t.format (time.rfc822)) //21 Dec 11 0852 UTC Fmt (t.format)) //12 월 21 일 08:56:34 2011 fmt.println (T. format ('02 Jan 2006 15:04 ')) //2011 년 12 월 21 일 08:52 s :=t.format ('20060102 ') fmt.println (t,'//wed dec 21 08336052:14 +0000 UTC 2011=20111221}字符串
프로그램은 메모리에 그 값을 저장하고 각 메모리 블록 (또는 단어)은类型别名:으로字符类型:으로 표시됩니다.地址해당 값의 메모리 주소를 가리키고 32 비트 기계에서 4 바이트를, 64 비트 기계에서 8 바이트를 차지하며, 가리키는 값의 크기와 관련이 없습니다.
Go Language의 주소 문자는 사용하기 전에 사용하기 전에 해당十六进制数을 반환합니다.
포인터 유형은 * 숫자 (접두사)에서一个指针变量可以指向任何一个值的内存地址으로 선행됩니다. 여기의 숫자는 유형 체인저입니다. 포인터를 사용한 값을 참조하는 것을 간접 참조라고합니다.
포인터가变量的内存地址이후에 정의되면 그 값은 nil입니다.
포인터 변수는 일반적으로 PTR로 약식됩니다.
예 : *p에 새 값을 할당하고 변수의 자체 값을 변경하는 쇼 (여기서 문자열이 있습니다)
123456789101112131415Package Mainimport 'fmt'func main () {s :='good bye 'var p *string=s *p='ciao 'fmt.printf ('여기서는 포인터 p: %p \ n ', p) //prints 주소 fmt.printf ('with is the strint. %s \ n ', *p) //인쇄 문자열 fmt.printf ('여기에 문자열 s: %s \ n ', s) //인쇄} 출력 : 여기에 포인터 p:0x2540820은 문자열입니다 *p: ciaohere는 string s:10101010101010101010101010
时间和日期
1234567891011121314151617181920212222324if 조건 1 {//something} else {//다른 일을한다면} else} else {//catch-all 또는 default} els. 프롬프트 var 프롬프트='숫자를 입력하십시오 (예 : 3 '+'또는 %s to quit.'func init () {if runtime.goos=='wind 조건 1: 사례 조건 2: default:}指针
控制结构
123456789package Mainimport 'fmt'func main () {i :=0; I 5; i ++ {fmt.printf ( '이것은 %d iteration \ n', i)}}if-else 结构
세트 (배열 및 맵 포함)를 반복 할 수 있으며 일반적인 형태는 다음과 같습니다. ix, val :=범위 coll {}.Val은 항상 세트에서 해당 인덱스의 값에 복사되므로 일반적으로 읽기 전용 속성 만 있으므로 수정 된 모든 수정은 세트의 원래 값에 영향을 미치지 않습니다 (获取指针所指向的内容).
123 for pos, char :=range str {.}
switch 结构
이 문장의 발생 후에 동작 범위는 가장 내면의 구조이며, 이는 어떤 형태의 루프 (카운터, 조건부 판단 등)에 사용할 수 있습니다. 그러나 Switch 또는 Select 문서에서 Break 문의 효과는 전체 코드 블록을 건너 뛰고 후속 코드를 실행하는 것입니다.나머지 루프 본체를 무시하고 다음 루프에 직접 들어가는 과정을 계속하십시오. 그러나 다음 루프는 무조건 실행되지 않습니다. 루프의 판단 조건은 여전히 실행 전에 충족되어야합니다.
for结构
, 스위치 또는 선택 문장은 레이블 형태의 식별자와 함께 사용할 수 있습니다.i :=0의 경우 123456789Label1: i=5; i ++ {j :=0; j=5; j ++ {if j==4 {계속 label1} fmt.printf ( 'i is: %d, j is: %d \ n', i, j)}} 33330
基于计数器的迭代
for-range 结构
1010Break 与 continue
10234678910111213141516161919 mainimport 'fmt'func main () {fmt.printf ('곱하기 2 * 5 * 6=%d \ n ', multiply3nums (2, 5, 6)) //var i1 int=multiply3nums (2, 5, 6) //fmt.printf ('maxtly 2 * 5 * 6=%d \ n ', i1). int, c int) int {//var product int=a * b * c //return product return return a * b * c} 출력 디스플레이 : 2 * 5 * 6=60标签与 goto
getx2andx3 getx2andx3_2와 함께 두 가지 기능을 사용하는 방법을 보여줍니다. 이름이없는 리턴 값을 여러 번 반환 해야하는 경우 (int, int)와 같은 ()를 사용하여 동봉해야합니다.123456789101112131415161717181920212222242522728package 'fmt'var num int=10var numx2, numx3 intfunc main () {numx2, numx3=getx2andx3 (num) printvalues (num=10, 2, output

函数(function)
일부는 원치 않는 값과 일치하고 그들을 버리는 데 사용됩니다. ThreeValues는 매개 변수가 필요하지 않은 3 개의 리턴 값을 가진 함수입니다. 다음 예에서는 첫 번째 및 세 번째 리턴 값을 i1 및 f1에 할당합니다. 두 번째 리턴 값은 빈 심볼 _에 할당 된 다음 자동으로 폐기됩니다.1234567891011121314 패키지 메인