함수 및 방법

3091 단어
go에서 함수 유형은 일등 유형이다. 이것은 함수를 하나의 값으로 전달하고 사용할 수 있다는 것을 의미한다.
func divide(dividend int,divisor int)(int,error){
//      
}

매개 변수 목록의 매개 변수는 반드시 이름이 있어야 하며, 결과 목록의 결과 이름은 있어도 되고 없어도 된다. (모두 이름을 생략하거나, 모두 이름이 있어야 한다.)
func divide(dividend int,divisor int)(result int, err error){
//      
}

 
함수체의 모든 조건 지점의 마지막 부분에는'return 반환값'이 있어야 한다. 만약에 함수 성명 결과가 구체적인 이름이 있다면'return 키워드 뒤에 아무것도 추가하지 않아도 된다.'return'
func divide(dividend int,divisor int)(result int, err error){
  if divisor ==0{
     err = erros.New("division by zero")
     return 
    }
    result = dividend / divisor
    return
}

전체 인스턴스
package main

import (
	"errors"
	"fmt"
)

func divide(dividend int, divisor int) (result int, err error) {
	if divisor == 0 {
		err = errors.New("division by zero")

		return
	}
	result = dividend / divisor
	return
}
func main() {
	re, err := divide(5, 3)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(re)
	}
}

함수의 0값은 nil입니다. 편지 수치가 nil이 아닌지 확인하는 것이 항상 필요합니다.
방법은 함수의 일종으로 실제로는 어떤 데이터 유형과 연결된 함수이다.예는 다음과 같다.
package main

import (
	"fmt"
)

type myInt int

func (i myInt) add(another int) myInt {
	i = i + myInt(another)
	return i

}
func main() {
	i1 := myInt(1)
	i2 := i1.add(2)
	fmt.Println(i1, i2)
}

성명에서 볼 때, 방법은 키워드func와 함수명 사이에 원괄호로 싸인 수신자 성명만 추가할 뿐이다.
수신자 성명은 두 부분으로 구성되어 있다
1) 오른쪽: 이 방법이 어떤 유형과 관련이 있는지 나타낸다. 여기는 myInt이다.
2) 왼쪽: 이 유형의 값을 현재 방법의 표지부에 지정한다. 여기는 i이다. 이 표지부는 현재 방법에서 하나의 변수의 대표로 볼 수 있다. 매개 변수처럼 수신자 변수라고 할 수 있다.
주의: 이 함수 출력값은 1 3 입니다
i의 값이 바뀌지 않은 것은 값 방법에서 수신자 변수에 대한 값이 원본 값에 영향을 주지 않기 때문이다.i1의 값이 바로 원값이다.i1의dd방법을 호출할 때 이 값은 수신자 변수 i(전자의 복사본은 후자와 관련이 있음)에 부여되지만 i와 i1은 두 변수로 관련이 존재하지 않습니다.
값 방법의 수신자 형식은 비지침의 데이터 형식입니다.대응하는 것은 지침 방법이다.그것의 수신자 형식은 데이터 형식의 바늘 형식입니다.
package main

import (
	"fmt"
)

type myInt int

func (i *myInt) add(another int) myInt {
	*i = *i + myInt(another)
	return *i

}
func main() {
	i1 := myInt(1)
	i2 := i1.add(2)
	fmt.Println(i1, i2)
}

실행 결과 3
값 방법 및 포인터 방법은 다음 규칙을 따릅니다.
수신자 변수가 대표하는 값은 사실상 원본 값의 복제품이다.만약 이 값이 바늘 형식이 아니라면, 값 방법에서 원본 값을 수정할 경로가 자연히 없을 것이다.
그러나 바늘 값과 복제 값이 가리키는 것은 틀림없이 같은 값이기 때문에 바늘 방법에서 원본 값을 바꾸는 경로가 존재한다.
수신자 형식이 인용 형식이나 별명 형식이라면 값 방법이라도 원본 값을 바꿀 수 있는 예외가 있습니다.
어떤 비지침의 데이터 형식에 대해 그것과 관련된 방법의 집합에는 그것의 값 방법만 포함되어 있다.
그것의 바늘 유형에 대해 그 방법 집합에는 값을 포함하는 방법도 바늘 방법을 포함하지만 바늘 데이터 형식이 아닌 값에서도 바늘 방법을 호출할 수 있다.고 내부에서 자동 변환을 해서 그래요.
예를 들어dd방법이 지침방법이라면 표현식 i1.add(2)는 자동으로 (&i1)로 변환됩니다.add(2)
 
 
 
 
 

좋은 웹페이지 즐겨찾기