> 백엔드 개발 > Golang > Go 언어에서 변수 선언 방법은 무엇입니까?

Go 언어에서 변수 선언 방법은 무엇입니까?

青灯夜游
풀어 주다: 2023-01-12 10:32:33
원래의
3120명이 탐색했습니다.

변수 선언 방법은 다음과 같습니다. 1. var를 사용하여 변수를 선언하고 변수의 데이터 유형을 나타냅니다. 구문은 "var 변수 이름 유형 = 표현식"입니다. 2. 짧은 변수를 만들려면 ":=" 문자를 사용하세요. 선언입니다. 구문은 "변수 이름:=표현식"입니다. 짧은 변수 선언을 사용하는 경우 var 키워드 및 유형 정보를 생략할 수 있습니다. 변수의 기본 유형은 bool, rune, int, float64, complex128 또는 string입니다.

Go 언어에서 변수 선언 방법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

정적 언어 학습의 중요한 특징은 동적 언어와 다릅니다: 변수 선언.

프로그래밍 언어의 컴파일러나 해석기는 변수가 참조할 수 있는 메모리 영역의 경계를 어떻게 알 수 있나요?

동적 언어와 정적 언어는 처리 방법이 다릅니다.

  • 동적 언어(예: Python, Ruby 등)의 인터프리터는 런타임 시 변수 할당을 분석하여 변수의 경계를 자동으로 결정할 수 있습니다. . 그리고 동적 언어에서는 런타임에 변수에 다양한 크기의 경계를 할당할 수 있습니다.

  • 정적 프로그래밍 언어는 이와 관련하여 "약간 더 나쁜 경험"을 가지고 있습니다. 정적 유형의 언어 컴파일러는 이 변수를 사용하기 전에 변수의 경계를 명확하게 알아야 하지만 정적 언어 컴파일러에는 이 정보를 자동으로 제공하는 기능이 없습니다. 이 경계 정보는 언어 사용자가 제공해야 합니다. , 그래서 "변수" 진술이 있습니다. 변수 선언을 통해 언어 사용자는 컴파일러에게 변수의 경계 정보를 명시적으로 알릴 수 있습니다. 특정 구현 수준에서 이 경계 정보는 변수의 유형 속성에 의해 제공됩니다.

정적 프로그래밍 언어 캠프의 Go 언어로서 정적 언어의 요구 사항을 따릅니다. 즉, 변수를 사용하기 전에 변수를 선언해야 합니다.

[golang] 변수 선언 및 초기화 var, :=, new() 및 make()

Go 언어는 다양한 변수 선언 및 초기화 방법을 제공합니다. 여기서는 하나씩 설명하는 데 중점을 둡니다. 그리고 간단한 가이드를 제공하세요.

Guide

  • make()를 사용하여 slice, mapchannel을 초기화합니다. make(),来初始化slicemapchannel
  • 大多数场合,类型明确的场合下,使用短变量声明方式:=
  • 当使用文字方式初始化一个变量,并且需要指明类型时,使用var变量声明方式。
  • 避免使用new(),除非你需要一个指针变量。

变量声明方式

go语言可以使用 var 来声明一个变量,并指明变量的数据类型。

	// 初始化整数变量,值为10。
	var v int = 10
	fmt.Println(v)
	// 输出: 10

	// 变量声明: 一个slice变量
	var vSlice []int = []int{1, 2, 3, 4}
	fmt.Println(vSlice, "type: ", reflect.TypeOf(vSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	var vMap map[string]int = map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(vMap)
	// 输出: map[a:1 b:2]
로그인 후 복사

短变量声明方式

short variable declarations 符号: :=

短变量声明时,变量的默认类型是: bool, rune, int, float64, complex128 or string

	// 短变量声明: 一个整数变量。
	sdvInt := 10
	fmt.Println(sdvInt, "type: ", reflect.TypeOf(sdvInt).Kind())
	// 输出: 10 type:  int

	// 短变量声明: 一个slice变量
	sdvSlice := []int{1, 2, 3, 4}
	fmt.Println(sdvSlice, "type: ", reflect.TypeOf(sdvSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	sdvMap := map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(sdvMap)
	// 输出: map[a:1 b:2]
로그인 후 복사

new(T)

new(T)的特点:

  • 根据类型T分配内存
  • 设置内存为0
  • 返回内存的指针
	// 初始化一个整数指针变量,指向的值为0
	var i3 *int = new(int)
	fmt.Println(*i3)

	// 初始化一个slice指针变量
	var i4 = new([10]int)[0:5]
	fmt.Println(i4, "type: ", reflect.TypeOf(i4).Kind())
	// 输出: [0 0 0 0 0] type: slice

	// 初始化一个map指针变量,指向的值为[]
	var i5 *map[string]int = new(map[string]int)
	fmt.Println(*i5)
	// 输出: map[]

	// 初始化一个chan指针变量,指向的值为nil
	var i6 *chan int = new(chan int)
	fmt.Println(*i6)
	// 输出: nil
로그인 후 복사

make()

make只用于初始化 slicemapchannel

대부분의 경우 유형이 명확한 경우

짧은 변수 선언메서드 :=를 사용하세요. 리터럴 메소드를 사용하여 변수를 초기화하고 유형을 지정해야 하는 경우 var변수 선언

메서드를 사용하세요.

포인터 변수가 필요한 경우가 아니면 new()를 사용하지 마세요.

🎜변수 선언 방법🎜🎜🎜🎜Go 언어에서는 var를 사용하여 변수를 선언하고 변수의 데이터 유형을 나타낼 수 있습니다. 🎜
	// make只能用于创建slice, map, channel
	// 切片类型(slice)
	makeSlice := make([]int, 5, 10)
	fmt.Println(makeSlice)
	// 输出: [0 0 0 0 0]

	// Map 类型
	var makeMap map[string]int = make(map[string]int)
	fmt.Println(makeMap)
	// 输出: map[]

	// Channel 类型
	var makeChan chan int32 = make(chan int32, 100)
	fmt.Println(makeChan)
	// 输出: 0xc000112000
로그인 후 복사
🎜🎜🎜짧은 변수 선언 🎜🎜🎜🎜짧은 변수 선언 기호: :=. 🎜🎜짧은 변수를 선언할 때 변수의 기본 유형은 bool, rune, int, float64</code입니다. >, < code>complex128 또는 string🎜
package main

import (
	"fmt"
	"reflect"
)

func main() {

	// 初始化整数变量,值为10。
	var v int = 10
	fmt.Println(v)
	// 输出: 10

	// 变量声明: 一个slice变量
	var vSlice []int = []int{1, 2, 3, 4}
	fmt.Println(vSlice, "type: ", reflect.TypeOf(vSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	var vMap map[string]int = map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(vMap)
	// 输出: map[a:1 b:2]

	// 短变量声明: 一个整数变量。
	sdvInt := 10
	fmt.Println(sdvInt, "type: ", reflect.TypeOf(sdvInt).Kind())
	// 输出: 10 type:  int

	// 短变量声明: 一个slice变量
	sdvSlice := []int{1, 2, 3, 4}
	fmt.Println(sdvSlice, "type: ", reflect.TypeOf(sdvSlice).Kind())
	// 输出: [1 2 3 4] type: slice

	// 短变量声明: 一个map变量,指向的值为[]
	sdvMap := map[string]int{
		"a": 1,
		"b": 2,
	}
	fmt.Println(sdvMap)
	// 输出: map[a:1 b:2]

	// 初始化一个整数指针变量,指向的值为0
	var newInt *int = new(int)
	fmt.Println(*newInt)

	// 初始化一个slice指针变量
	var newSlice = new([10]int)[0:5]
	fmt.Println(newSlice, "type: ", reflect.TypeOf(newSlice).Kind())
	// 输出: [0 0 0 0 0] type: slice

	// 初始化一个map指针变量,指向的值为[]
	var newMap *map[string]int = new(map[string]int)
	fmt.Println(*newMap)
	// 输出: map[]

	// 初始化一个chan指针变量,指向的值为nil
	var newChan *chan int = new(chan int)
	fmt.Println(*newChan)
	// 输出: nil

	// make只能用于创建slice, map, channel
	// 切片类型(slice)
	makeSlice := make([]int, 5, 10)
	fmt.Println(makeSlice)
	// 输出: [0 0 0 0 0]

	// Map 类型
	var makeMap map[string]int = make(map[string]int)
	fmt.Println(makeMap)
	// 输出: map[]

	// Channel 类型
	var makeChan chan int32 = make(chan int32, 100)
	fmt.Println(makeChan)
	// 输出: 0xc000112000

}
로그인 후 복사
🎜🎜🎜new(T)🎜🎜🎜🎜new(T) 기능: 🎜🎜🎜에 따라 할당됨 T Memory🎜🎜Set memory to 0🎜🎜메모리 포인터를 반환🎜🎜rrreee🎜🎜🎜make()🎜🎜🎜🎜make는 slice, map을 초기화하는 데에만 사용됩니다. 코드> 및 채널. 🎜rrreee🎜🎜🎜전체 소스 코드🎜🎜🎜rrreee🎜[관련 권장 사항: 🎜Go 비디오 튜토리얼🎜, 🎜프로그래밍 교육🎜]🎜

위 내용은 Go 언어에서 변수 선언 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿