golang 함수 문법
go 함수의 특징
go의 함수는 여러 개의 반환값이 있을 수 있다
자주 사용하는 자바 개발에 있어 실체류가 징그럽지 않나요?경험이 있는 자바 개발에 대해 구역질이 날 것이다. 우리가 최적화 코드를 필요로 할 때 많은 수의 컴파일러가 들어오고 컴파일러가 쌓여 있는 것을 발견하면 컴파일러가 실체류로 새로 만들어서 컴파일러를 저장해야 한다.실체류가 갈수록 많아지고 코드가 특히 보기 흉해서 강박증이 범할 것이다.Golang은 여러 개의 값을 되돌려 이 문제를 해결하고 개발 주기를 단축시켰다.
go의 반환값도 변수 이름 (규범) 을 지정해야 한다.
물론 쓰지 않을 수도 있지만, 우리 코드는 써야 할 뿐만 아니라, 반드시 예쁘게 써야 한다. 틀처럼 우아하고 규범화되어야 한다
함수의 기본 쓰기
func [함수 이름]([함수 인삼])([함수 반환값]) {
함수체
}
몇 가지 예를 보겠습니다.
인삼이 있어도 되돌아오는 값이 없다
a:=10
func firstFunction(a int)(){
//
}
func firstFunction(a,b int)(){
//
}
func firstFunction(a int,b string)(){
//
}
부정확한 매개 변수
자바에서 mybatis 원본 코드에서 자주 사용하는 변수 변수입니까? go를... 로 표시하는 것도 마찬가지입니다. 문법은 다음과 같습니다. [변수 이름]... [type], 예를 들어: a... int, b... stringfunc ChangeParamter(args...string){
//
}
부정확한 매개 변수도 여러 개 전달할 수 있다
호출할 때 입참하는 거 잊지 마세요.func ChangeParamter(a string,args...int){
//
}
func main(){
ChangeParamter("qwe",1,3,4,5)
}
부정확한 매개 변수는 마지막 하나만 놓을 수 있습니다
잘못된 시범을 보이다func ChangeParamter(a...string,args...int){
//
}
부정확한 매개 변수가 함수 간에 전달되다 (한꺼번에 모두 전달됨)
변수 이름으로... 을 더하여 모든 매개 변수 [변수 이름] 가져오기...func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args...)
}
부정확한 매개 변수가 함수 간에 전달됨(지정된 위치의 값을 전달함)
가변 매개 변수 0에서 2 위치의 값을 전송하다func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args[:2]...)
}
가변 매개 변수 2 뒤의 값을 전송하다func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args[2:]...)
}
다음은 되돌아오는 값이 있는
규범에 맞지 않는 걸로 할게요.func function()(result int){
return 666
}
다시 한 번 규범화된 것도 역시 정부의 요구이다func function()(result int){
result = 666
return
}
다중 반환 값
func function()(result int,str string,b int){
result,str,b = 666,"123",3
return
}
return으로 바로 되돌아갈 수 있습니다. (다른 언어와 마찬가지입니다.)
func function(){
// return ,
return
}
함수에 별명을 지어라!type
함수도 일종의 데이터 형식이다!
이것은 매우 중요하다. 이것도 다태적인 셈이다. 고의 새로운 문법이고 매우 유연하다
코드를 예쁘게 쓰려면 익숙해져야 한다
이 SpecialName 성명 후 함수 형식이 되어main 방법에서 호출됩니다//
type SpecialName func(a int)(b int )
func function(a int)(b int ){
b=a
return
}
func main(){
// SpecialName
var testfunc SpecialName;
// testfunc ,
// function SpecialName
testfunc=function
// function
testfunc(1,3)
}
다음은 함수로 다태를 실현할 것이다
하나의 방법으로 가감승제를 실현하다
여기가 어려워지기 시작했어요. 이 기능은 자바의 인터페이스와 실현 인터페이스, 전략 모델과 비슷해요!
package main
//
func Add(a int,b int)(result int){
result=a+b
return
}
//
func Sub(a int,b int)(result int){
result=a+b
return
}
//
func Mult(a int,b int)(result int){
result=a+b
return
}
//
func Div(a int,b int)(result int){
result=a+b
return
}
// math
type Math func(a int,b int)(result int)
//
// Math
func Caculate(a int,b int,method Math)(result int){
// , ,
result=method(a,b)
return
}
func main() {
//
Caculate(1,2,Add)
//
Caculate(1,2,Sub)
//
Caculate(1,2,Mult)
//
Caculate(1,2,Div)
}
익명 함수와 클립
익명 함수 즉 함수 이름이 없는 클립은 이 함수로 바깥의 값을 얻을 수 있다. 전역 변수의 값을 얻는 것은 자바, 익명 내부 클래스와 비슷하다는 뜻이다.func main(){
// f1
f1:=func(){
//
}
//
func(){
//
}()
}
매개 변수와 반환 값이 있는 익명 함수 직접 호출
func main(){
//e,f
e,f:=func(a int,b int)(c int ,d int){
//
return c,d
}(10,10)
}
함수의 반환값도 익명 함수일 수 있다
//
func Test1() func(){
f:=func(){
//
}
return f
}
//
func Test2() func(){
return func(){
//
}
}
defer 호출 지연
defer는 함수 내부에만 놓을 수 있습니다. 함수가 끝나기 전의 찰나에 실행됩니다. 예를 들어 파일을 읽을 때 흐르는 defer를 끄는 것은 자바의finally와 같습니다. 어떻게든 실행됩니다.func main(){
defer printf("a")
printf("b")
// ba
}
여러 개의 defer 문장은 선진적이고 후진적인 순서에 따라 집행되는데, 바로 반자 집행이다
func main(){
defer printf("a")
defer printf("b")
// ba
}
국부와 전역 변수는 이름을 바꿀 수 있고, 사용 시 원칙에 가깝다.
package main
a:=10
func main{
var a float32
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set container
There is no built-in set container in Go
How to implement Set
struct{} => type
struct{}{} => 0bytes
How to create
set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
a:=10
func firstFunction(a int)(){
//
}
func firstFunction(a,b int)(){
//
}
func firstFunction(a int,b string)(){
//
}
func ChangeParamter(args...string){
//
}
func ChangeParamter(a string,args...int){
//
}
func main(){
ChangeParamter("qwe",1,3,4,5)
}
func ChangeParamter(a...string,args...int){
//
}
func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args...)
}
func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args[:2]...)
}
func ChangedParamter1(args...int){
//
}
func ChangedParamter2(args...int){
ChangedParamter1(args[2:]...)
}
func function()(result int){
return 666
}
func function()(result int){
result = 666
return
}
func function()(result int,str string,b int){
result,str,b = 666,"123",3
return
}
func function(){
// return ,
return
}
//
type SpecialName func(a int)(b int )
func function(a int)(b int ){
b=a
return
}
func main(){
// SpecialName
var testfunc SpecialName;
// testfunc ,
// function SpecialName
testfunc=function
// function
testfunc(1,3)
}
하나의 방법으로 가감승제를 실현하다
여기가 어려워지기 시작했어요. 이 기능은 자바의 인터페이스와 실현 인터페이스, 전략 모델과 비슷해요!
package main
//
func Add(a int,b int)(result int){
result=a+b
return
}
//
func Sub(a int,b int)(result int){
result=a+b
return
}
//
func Mult(a int,b int)(result int){
result=a+b
return
}
//
func Div(a int,b int)(result int){
result=a+b
return
}
// math
type Math func(a int,b int)(result int)
//
// Math
func Caculate(a int,b int,method Math)(result int){
// , ,
result=method(a,b)
return
}
func main() {
//
Caculate(1,2,Add)
//
Caculate(1,2,Sub)
//
Caculate(1,2,Mult)
//
Caculate(1,2,Div)
}
익명 함수와 클립
익명 함수 즉 함수 이름이 없는 클립은 이 함수로 바깥의 값을 얻을 수 있다. 전역 변수의 값을 얻는 것은 자바, 익명 내부 클래스와 비슷하다는 뜻이다.
func main(){
// f1
f1:=func(){
//
}
//
func(){
//
}()
}
매개 변수와 반환 값이 있는 익명 함수 직접 호출
func main(){
//e,f
e,f:=func(a int,b int)(c int ,d int){
//
return c,d
}(10,10)
}
함수의 반환값도 익명 함수일 수 있다
//
func Test1() func(){
f:=func(){
//
}
return f
}
//
func Test2() func(){
return func(){
//
}
}
defer 호출 지연
defer는 함수 내부에만 놓을 수 있습니다. 함수가 끝나기 전의 찰나에 실행됩니다. 예를 들어 파일을 읽을 때 흐르는 defer를 끄는 것은 자바의finally와 같습니다. 어떻게든 실행됩니다.
func main(){
defer printf("a")
printf("b")
// ba
}
여러 개의 defer 문장은 선진적이고 후진적인 순서에 따라 집행되는데, 바로 반자 집행이다
func main(){
defer printf("a")
defer printf("b")
// ba
}
국부와 전역 변수는 이름을 바꿀 수 있고, 사용 시 원칙에 가깝다.
package main
a:=10
func main{
var a float32
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.