Latest web development tutorials

언어 변수를 이동

수학에서 변수는 컴퓨터 언어가 저장 될 수 있거나 또는 계산 된 결과 값 추상화를 나타낼 수있다. 변수는 변수 이름을 통해 액세스 할 수 있습니다.

이동 언어 변수 이름은 첫 글자가 숫자하지 않은의 문자, 숫자, 밑줄로 구성되어 있습니다.

변수의 일반적인 형태는 var 키워드를 사용하여 선언된다 :

var identifier type

변수 선언

지정, 기본값을 사용하는 경우 첫째, 선언을 변수 유형을 지정합니다.

var v_name v_type
v_name = value

자기 결정 변수 유형의 값에 기초하여 상기 제 2.

var v_name = value

셋째, 생략 VAR, 참고 : = 변수 왼쪽이 자리에서 선언되지 않아야은, 그렇지 않으면 컴파일러 오류가 발생합니다.

v_name := value

// 例如
var a int = 10
var b = 10
c : = 10

다음 예는 다음과 같다 :

package main
var a = "w3cschool本教程"
var b string = "w3cschool.cc"
var c bool

func main(){
    println(a, b, c)
}

결과의 위의 예제 구현 :

w3cschool本教程 w3cschool.cc false

다 변수 선언

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误


// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

다음 예는 다음과 같다 :

package main

var x, y int
var (  // 这种因式分解关键字的写法一般用于声明全局变量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

결과의 위의 예제 구현 :

0 0 0 false 1 2 123 hello 123 hello

값 형식과 참조 형식

모든 INT, 플로트, 부울 및 문자열 등이 기본 유형을 직접 메모리에 저장된 값으로 변수의 이러한 유형을 사용하여 모든 값 유형은 다음과 같습니다

당신이 등호 사용하는 경우 = 변수의 값이 같은 다른 변수에 할당 : j = i , 난의 복사본이 될 것입니다 메모리의 값은 사실이다 :

0xf840000040 (각 주소가 다를 수 있습니다) : 당신은 내가 & 내가, 예를 들어 변수의 메모리 주소를 얻을 수 있습니다. 값은 스택 형 변수 값을 기억.

메모리 주소는 시스템에 따라 달라집니다, 또는 실행 후 다른 컴퓨터에서 심지어 같은 프로그램은 서로 다른 메모리 주소를해야합니다. 각 기기는 다른 메모리 레이아웃을 가질 수 있고, 위치 할당이 다를 수 있기 때문이다.

더 복잡한 데이터가 종종 여러 단어의 사용을 필요로, 이러한 데이터는 일반적으로 참조 타입을 이용하여 저장된다.

참조 형 변수 R1, R1은 (디지털), 또는 제 1 워드의 메모리 어드레스의 위치가 위치하는 메모리 주소에 저장된 값이다.

메모리 어드레스는 또 다른 하나의 단어가 실제로 있었던 포인터가 호출된다.

워드 포인터 복수 유형의 참조 (메모리 레이아웃 연속), 스토리지의 가장 효율적인 형태의 계산 인 연속적인 메모리 주소 일 수있다, 이들 또한 분산 메모리 워드에 저장 될 수 있으며, 각각의 단어는 어디에서 다음 단어의 메모리 주소를 나타냅니다.

할당 문 R2 = R1, 참조 만 (주소) 복사됩니다.

R1의 값이 변경되면, 모든 인용 그 값이 경우, R2가 또한 영향을 가리키고하도록 변형 될 것이다.


= 대입 연산자 : 짧은 형태는을 사용하여

우리는 시스템 변수가 선언 var 키워드에 쓰여진 문이 실제로 약간 중복, 생략에 의해 자동 변수의 유형이 초기화됩니다 추론 할 수 있음을 알고, 그래서 우리는 그들을 단축 될 수있다 = 50 또는 b = false입니다.

a와 b 유형 (INT 및 부울)이 자동으로 컴파일러를 추론한다.

이 변수의 사용의 바람직한 형태이지만, 단지 함수 본문에 사용될 수 있으며, 이는 전역 변수로 선언하여 할당 할 수 없습니다. 연산자를 사용하여 = 효율적으로 초기화 문이라는 새로운 변수를 만들 수 있습니다.

주의 사항

A : = (20)는 허용되지 컴파일러 에러를 왼쪽에 새로운 변수를 표시하지 것 같은 코드 블록이, 우리가 할 수없는 경우, 예를 들면, 변수 초기화 문에 대해 동일한 이름을 재사용 =를하지만 같은 변수에 새로운 값을 할당하는 것이 있기 때문에 = 20 일 수있다.

당신은 변수 a를 정의하기 전에 당신이 그것을 사용하는 경우, 당신은 정의되지 않은 컴파일 오류가 발생합니다하십시오.

로컬 변수를 선언하지만, 코드의 같은 블록에 사용하지 않을 경우, 당신은 어떤 변수 a를 다음과 같은 예를 들어, 컴파일 오류가 발생합니다 :

func main() {
   var a string = "abc"
   fmt.Println("hello, world")
}

선언하지 사용되는 오류가 발생합니다이 코드를 컴파일하려고합니다.

또한,이 값을 사용하므로, 사용되어야 충분하지 않은 단순 할당을 수득

fmt.Println("hello, world", a)

이 오류를 제거합니다.

그러나 전역 변수가 선언되었지만 사용할 수 없습니다.

>

동일한 유형의 다수의 변수와 같은 동일한 행에 선언 될 수있다 :

var a, b, c int

이상의 변수가 같은, 동일한 행에 할당 될 수있다 :

a, b, c = 5, 7, "abc"

상기 라인은, 그렇지 않으면이 방법으로 표기하고, A, B 및 C 변수 선언되었다고 가정

a, b, c := 5, 7, "abc"

값 C의 값이 "ABC"인, 7 B A 값이 5가되도록이 값은, 왼쪽의 변수에 할당 된 동일한 순서로 오른쪽에있다.

이 할당은 병렬 또는 동시에이라고합니다.

두 변수의 값을 교환하려는 경우, 당신은 단순히을 A, B = B를 사용할 수 있습니다.

빈 식별자는 또한 _ 5의 값으로 폐기 값을 사용한다 : _, B = 5, 7 포기되었다.

_ 실제로 쓰기 전용 변수는, 당신은 그 값을 얻을 수 없습니다. 이렇게 가서 모든 변수를 사용해야하는 언어를 선언,하지만 때로는 당신을 얻을 함수에서 모든 반환 값을 사용할 필요가 없습니다 때문입니다.

발, ERR = FUNC1 (VAR1 일) : 병렬 할당도 여기에 동시에 FUNC1 함수를 호출하여 얻을 수있다 다수의 같은 발 등의 반환 값, 오류 ERR를 반환하는 기능으로 사용됩니다.