GO --- 기본 값은 전달과 참조 언어에 의해 전달

패키지 본체 

오기 ( 
	"FMT" 
) 

/ * 
전사 값 
[형태 개의 파라미터의 함수 [실제 파라미터 값 복사 
모든 변형 어드레스의 내용이 외부의 실제 파라미터와 무관 
하며, 모든 파라미터로서 기본 데이터 형식 값으로 전달된다 
* / 
FUNC ChangeBaseValue (V의 INT) { 
	fmt.Printf ( '주 : 어드레스 = V P % \ N- ", 브이) 
	V * = 2 개 
	모든 로컬 변수 때 함수 반환 (형식 매개 본원 V 함유) // 발표 된 
} 

/ * 
참조 (어드레스 전송) 패스 
기록 [형태 파라미터의 함수이다 [실제 파라미터 해결 
직접 실제 파라미터 변경 외부 어드레스 콘텐츠의 모든 변경 
* / 
FUNC ChangeBaseValuePtr (V * 지능 ) { 
	fmt.Printf ( "주 : 주소 = V 피 % \ N-", V) 
	* V = 2 * 
} 

형 구조체 {인격 
	나이 INT는 
} 

/ * 
전송 구조의 값  
파라미터 (P)의 형태는 실제 파라미터 zhangsan의 값이 사본
페이지의 아무것도의 zhangsan을 할 필요가 없습니다 미치는 영향 
쪽 함수 생성 함수의 실행되는 동안 로컬 변수가 해제 완료이다 
* / 
FUNC ChangeObjectValue (는 Person P) { 
	fmt.Printf ( "ChangeObjectValue %의 p = P 주소 \ N- '& P) 
	p.Age * = 2 
	// 모든 로컬 변수 (가 파라미터가 여기에 포함 된 함수의 복귀 V) 발표 된 
} 


/ * 
기준 구조체 (전송 주소)를 통과 
하는 기록 파라미터 (P)의 형태를 zhansan 실제 파라미터 어드레스 메모리 
페이지의 내용이 zhangsan 수정 직접 변형되어 있도록 
P가 생성되는 실행되는 함수의 로컬 변수, 함수는 최종 해제 
* / 
FUNC ChangeObjectValuePtr (인격 * P) { 
	fmt.Printf을 ( "ChangeObjectValue %의 P = P 주소 \ N- 'P) 
	p.Age * = 2 개 
	모든 로컬 변수 // 함수 반환 (매개 변수의 형태로 여기에서 V 포함하는) 공개 하였다 
} 

/ * 
파라미터로 배열 : 값 송신 
기존 콘텐츠 / 요소 참조로 전달된다 슬라이스와 매핑 
* / 
{FUNC ChangeContainerValue (INT 어레이 슬라이스 [] INT, MMAP 맵 [문자열] INT [3.])
	fmt.Printf ( "ChangeContainerValue : 어레이 [0] 어드레스 P = % \ N- ', 어레이 [0]) 
	fmt.Printf ("ChangeContainerValue : 슬라이스 [0] 어드레스 P = % \ N- ", 슬라이스 [0]) 
	FMT. 의 printf ( "ChangeContainerValue :지도 주소 = % P \ N-"MMAP) 

	어레이 [0] = 100 
	슬라이스 [0] = 200이다 
	MMAP [ "상사"] = 300 
} 


FUNC ChangeContainerValuePtr (배열 *. 3 INT 슬라이스 * ] INT, MMAP * 맵 [문자열] INT) { 

	(* 배열) [0] = 100 
	(* 조각) [0] = 200 
	(* MMAP) "상사"] = 300 
	* 슬라이스 = 추가] (* 조각 ,. 4 ) 
	(* MMAP)은 = 4 "네번째 순위"] 
} 


/ * 변속기의 기본 유형의 가치 기준에 의해 전달 * / 
FUNC의 main021 () { 
	var에 A = 10 
	"A = 어드레스 P % \ N- 메인"fmt.Printf ( , & A) 
	ChangeBaseValue (A) 
	FMT.의 printf ( "메인하십시오 주소 = % P \ n", a)
	fmt.Println (A) 
	fmt.Printf ( "주 :주소 = % P \ n "을 맵핑 MMAP)
 
	ChangeBaseValuePtr (A) 
	fmt.Printf ( '주 :주소 = % 포인트 \ n ", a) 
	fmt.Println (a)
} 

/ * 기준값 전송 및 전달 구조 * / 
FUNC의 main022 () { 
	zhangsan는 = {인격 나이 : 10} 
	fmt.Printf은 (, zhangsan "메인 zhangsan 어드레스 P는 % \ N- =") 
	// ChangeObjectValue (zhangsan ) 
	ChangeObjectValuePtr (zhangsan) 
	fmt.Println (zhangsan.Age) 
} 

FUNC 주 () { 
	VAR 배열 = [3.] {1,2,3} INT 
	슬라이스 : 메이크 = ([] INT, 0) 
	슬라이스 추가] = (조각, . 1,2 ,. 3) 
	MMAP = 메이크 (맵 [문자열] INT) 
	MMAP [ "상사"] = 1. 
	MMAP [ "딕"] = 2 
	MMAP [ "막내"] = 3. 
	fmt.Printf ( '주 : 어레이 [0] 어드레스 P = % \ N- ', 어레이 [0]) 
	fmt.Printf ('주 : 슬라이스 [0] 어드레스 P = % \ N- ", 슬라이스 [0])MMAP) 
	ChangeContainerValuePtr (배열, 슬라이스, MMAP)
	// ChangeContainerValue (어레이 슬라이스 MMAP) 

	fmt.Println (배열) 
	fmt.Println (슬라이스) 
	fmt.Println (MMAP) 
}

출력 :

주 : 어레이 [0] = 주소 0xc0000102e0 
주 : 슬라이스 [0] = 주소 0xc000010300 
주 :지도 0xc000062240 주소 = 
[3 2 100] 
[2 (200)는 3 4] 
맵 [보스 : 제 아이 300 : 2 막내 : 제 3 4]

  

추천

출처www.cnblogs.com/yunweiqiang/p/12392331.html