Оператор короткого объявления переменной в Go

Зарегистрируйтесь и зарабатывайте 1000$ в день ⋙

Оператор короткого объявления переменных (:=) в Golang используется для создания переменных с уникальным именем и начальным значением. Основная цель использования этого оператора — объявление и инициализация локальных переменных внутри функций, а также сужение области действия переменных. Тип переменной определяется типом выражения. Ключевое слово var также используется для создания переменных определенного типа. Таким образом, можно сказать, что в Golang есть два способа создания переменных:

Оператор короткого объявления переменной в Go

  • Использование ключевого слова var
  • Используйте оператор короткого объявления переменной (:=)

Теперь давайте узнаем, как использовать оператор короткого объявления переменных в Golang!

Основное содержание

Синтаксис использования оператора краткого объявления переменной в Golang

variable_name := biểu thức hoặc giá trị

Здесь вам необходимо инициализировать переменную сразу после объявления. Но используя ключевое слово var , вы можете избежать инициализации во время объявления. Нет необходимости указывать тип переменной. Выражение или значение в правой части используется для оценки типа переменной.

Например: здесь мы объявляем переменные с помощью оператора короткого объявления и не указываем тип переменной. Тип переменной определяется типом выражения в правой части оператора :=.

// Minh họa chương trình Go dùng := (toán tử khai báo ngắn) 
package main

import "fmt"

func main() {

	// khai báo và khởi tạo biến
	a := 30

	// lấy một biến chuỗi
	Language: = "Go Programming"

	fmt.Println("The Value of a is: ", a)
	fmt.Println("The Value of Language is: ", Language)

}

Результат:

The Value of a is:  30
The Value of Language is:  Go Programming

Объявление нескольких переменных с помощью оператора короткого объявления

Оператор краткого объявления также можно использовать для объявления нескольких переменных одного и того же или разных типов в одном объявлении. Типы этих переменных оцениваются выражением в правой части оператора :=.

Например:

// Minh họa chương trình Go dùng toán tử khai báo ngắn := short để khai báo nhiều
// biến thành một câu lệnh khai báo duy nhất
package main

import "fmt"

func main() { 

// nhiều biến của cùng kiểu(int)
geek1, geek2, geek3 := 117, 7834, 5685

// nhiều biến của các kiểu khác nhau
geek4, geek5, geek6 := "GFG", 859.24, 1234

// Hiện giá trị và kiểu của biến
fmt.Printf("The value of geek1 is : %d\n", geek1) 
fmt.Printf("The type of geek1 is : %T\n", geek1) 

fmt.Printf("\nThe value of geek2 is : %d\n", geek2) 
fmt.Printf("The type of geek2 is : %T\n", geek2) 

fmt.Printf("\nThe value of geek3 is : %d\n", geek3) 
fmt.Printf("The type of geek3 is : %T\n", geek3)

fmt.Printf("\nThe value of geek4 is : %s\n", geek4) 
fmt.Printf("The type of geek4 is : %T\n", geek4)


fmt.Printf("\nThe value of geek5 is : %f\n", geek5) 
fmt.Printf("The type of geek5 is : %T\n", geek5)

fmt.Printf("\nThe value of geek6 is : %d\n", geek6) 
fmt.Printf("The type of geek6 is : %T\n", geek6)

} 

Результат:

The value of geek1 is : 117
The type of geek1 is : int

The value of geek2 is : 7834
The type of geek2 is : int

The value of geek3 is : 5685
The type of geek3 is : int

The value of geek4 is : GFG
The type of geek4 is : string

The value of geek5 is : 859.240000
The type of geek5 is : float64

The value of geek6 is : 1234
The type of geek6 is : int

Важные моменты, которые следует помнить:

Оператор краткого объявления можно использовать, когда хотя бы одна переменная в левой части оператора :=объявлена ​​новой. Оператор краткого объявления переменных работает как присваивание переменным, объявленным в том же лексическом блоке. Чтобы лучше понять эту концепцию, давайте рассмотрим пример.

Пример 1: Приведенная ниже программа выдаст ошибку, поскольку в левой части оператора нет новой переменной :=.

// Minh họa chương trình Go dùng khai báo biến ngắn
package main

import "fmt"

func main() { 

	// lấy hai biến
	p, q := 100, 200

	fmt.Println("Value of p ", p, "Value of q ", q)

	// Báo lỗi vì không có biến mới ở bên tay trái của :=
	p, q := 500, 600
	
	fmt.Println("Value of p ", p, "Value of q ", q)
}

Ошибка:

./prog.go:17:10: no new variables on left side of := 

Пример 2:

В приведенной ниже программе вы можете увидеть строку geek3, geek2 := 456, 200, которая будет работать без ошибок, поскольку слева от оператора есть как минимум одна новая переменная, то есть geek3 :=.

// Chương trình Go dùng toán tử khai báo biến ngắn
package main 

import "fmt"

func main() { 

// Ở đây, khai báo biến ngắn hoạt động
// như một phép gán cho biến geek1
// vì cùng một biến có trong cùng một khối
// do đó giá trị của geek2 được thay đổi từ 100 thành 200
geek1, geek2 := 78, 100

// ở đây, := được sử dụng như một phép gán cho geek2
// vì nó đã được khai báo. Ngoài ra, dòng này
// sẽ hoạt động tốt vì geek3 mới được tạo
// biến
geek3, geek2 := 456, 200

// Nếu bạn thử chạy các dòng được chú thích,
// thì trình biên dịch sẽ báo lỗi vì
// các biến này đã được định nghĩa
// geek1, geek2 := 745, 956
// geek3 := 150

// Hiện giá trị của các biến
fmt.Printf("The value of geek1 and geek2 is : %d %d\n", geek1, geek2) 
											
fmt.Printf("The value of geek3 and geek2 is : %d %d\n", geek3, geek2) 
} 

Результат:

The value of geek1 and geek2 is : 78 200
The value of geek3 and geek2 is : 456 200

Go — строго типизированный язык, поскольку вы не можете присвоить объявленной переменной значение другого типа данных.

Например:

// Minh họa chương trình Go dùng toán tử khai báo biến ngắn
package main 

import "fmt"

func main() { 

	// lấy một biến của int
	z := 50
	
	fmt.Printf("Value of z is %d", z)
	
	// gán lại giá trị của kiểu chuỗi
// nó sẽ đưa ra lỗi
	z := "Golang"
} 

Ошибка:

./prog.go:16:4: no new variables on left side of := 
./prog.go:16:7: cannot use “Golang” (type string) as type int in assignment 
 

В кратком объявлении переменной Golang позволяет инициализировать набор переменных с помощью вызова функции, которая возвращает несколько значений. Или можно сказать, что переменным также могут быть присвоены значения, которые оцениваются во время выполнения.

Например:

// Tại đây, hàm math.Max function trả về
// số lớn nhất trong biến i 
i := math.Max(x, y)

Локальная переменная или глобальная переменная

С помощью оператора короткого объявления переменных (:=) можно объявлять локальные переменные, область действия которых ограничена только уровнем блока. Обычно локальные переменные объявляются внутри функционального блока. Если вы попытаетесь объявить глобальные переменные с помощью оператора короткого объявления, вы получите ошибку.

Пример 1:

// Chương trình Go hiển thị cách sử dụng toán tử :=
// để khai báo các biến cục bộ
package main

import "fmt"

// sử dụng từ khóa var để khai báo
// và khởi tạo biến
// đó là package hoặc bạn có thể nói
// phạm vi cấp toàn cục
var geek1 = 900

// sử dụng khai báo biến ngắn
// sẽ báo lỗi
geek2 := 200

func main() {

// truy cập geek1 bên trong hàm
fmt.Println(geek1)

// truy cập geek2 bên trong hàm
fmt.Println(geek2)

}

Ошибка:

./prog.go:15:1: syntax error: non-declaration statement outside function body 

Пример 2:

// Chương trình Go dùng toán tử := operator
// để khai báo các biến cục bộ
package main 

import "fmt"

// dùng từ khóa var để khai báo
// và khởi tạo biến
// nó đóng gói hoặc bạn có thể báo
// phạm vi cấp toàn cục
var geek1 = 900


func main() { 

// dùng khai báo biến ngắn
// bên trong hàm chính
// nó có phạm vi cục bộ tức là không thể
// truy cập bên ngoài hàm chính
geek2 := 200

// truy cập geek1 bên trong hàm này
fmt.Println(geek1) 

// truy cập geek2 bên trong hàm này
fmt.Println(geek2) 
	
} 

Результат:

900
200
Sign up and earn $1000 a day ⋙

Leave a Comment

Разница между обычным телевизором и Smart TV

Разница между обычным телевизором и Smart TV

Умные телевизоры действительно покорили мир. Благодаря множеству замечательных функций и возможности подключения к Интернету технологии изменили то, как мы смотрим телевизор.

Почему в морозильной камере нет подсветки, а в холодильнике есть?

Почему в морозильной камере нет подсветки, а в холодильнике есть?

Холодильники — привычные бытовые приборы. Холодильники обычно имеют 2 отделения: холодильное отделение просторное и имеет подсветку, которая автоматически включается каждый раз, когда пользователь ее открывает, а морозильное отделение узкое и не имеет подсветки.

2 способа устранения перегрузки сети, которая замедляет Wi-Fi

2 способа устранения перегрузки сети, которая замедляет Wi-Fi

На сети Wi-Fi влияют многие факторы, помимо маршрутизаторов, пропускной способности и помех, но есть несколько разумных способов улучшить работу вашей сети.

Как перейти с iOS 17 на iOS 16 без потери данных с помощью Tenorshare Reiboot

Как перейти с iOS 17 на iOS 16 без потери данных с помощью Tenorshare Reiboot

Если вы хотите вернуться к стабильной версии iOS 16 на своем телефоне, вот базовое руководство по удалению iOS 17 и понижению версии с iOS 17 до 16.

Что происходит с организмом, если вы едите йогурт каждый день?

Что происходит с организмом, если вы едите йогурт каждый день?

Йогурт — замечательная еда. Полезно ли есть йогурт каждый день? Как изменится ваше тело, если вы будете есть йогурт каждый день? Давайте узнаем вместе!

Какой вид риса лучше всего подходит для здоровья?

Какой вид риса лучше всего подходит для здоровья?

В этой статье рассматриваются наиболее питательные виды риса и способы максимально увеличить пользу для здоровья любого выбранного вами вида риса.

Как просыпаться вовремя утром

Как просыпаться вовремя утром

Установление режима сна и отхода ко сну, смена будильника и корректировка рациона питания — вот некоторые из мер, которые помогут вам лучше спать и вовремя просыпаться по утрам.

Советы по игре Rent Please! Симулятор арендодателя для новичков

Советы по игре Rent Please! Симулятор арендодателя для новичков

Арендуйте, пожалуйста! Landlord Sim — мобильная игра-симулятор для iOS и Android. Вы будете играть за владельца жилого комплекса и начнете сдавать квартиры в аренду, чтобы улучшить интерьер своих апартаментов и подготовить их к приему арендаторов.

Последние коды защиты башни в ванной и как вводить коды

Последние коды защиты башни в ванной и как вводить коды

Получите игровой код Bathroom Tower Defense Roblox и обменяйте его на потрясающие награды. Они помогут вам улучшить или разблокировать башни с более высоким уроном.

Конструкция, обозначения и принципы работы трансформаторов

Конструкция, обозначения и принципы работы трансформаторов

Давайте максимально подробно изучим конструкцию, обозначения и принципы работы трансформаторов.

4 способа, которыми ИИ делает умные телевизоры лучше

4 способа, которыми ИИ делает умные телевизоры лучше

От лучшего качества изображения и звука до голосового управления и многого другого — эти функции на базе искусственного интеллекта делают смарт-телевизоры намного лучше!

Почему ChatGPT лучше DeepSeek

Почему ChatGPT лучше DeepSeek

Поначалу люди возлагали большие надежды на DeepSeek. Как ИИ-чат-бот, позиционируемый как серьезный конкурент ChatGPT, он обещает интеллектуальные возможности и возможности чата.

Встречайте Fireflies.ai: бесплатный секретарь на базе искусственного интеллекта, который сэкономит вам часы работы

Встречайте Fireflies.ai: бесплатный секретарь на базе искусственного интеллекта, который сэкономит вам часы работы

Легко упустить важные детали, записывая другие важные вещи, а попытки делать заметки во время общения могут отвлекать. Решение — Fireflies.ai.

Как вырастить Аксолотля Майнкрафт, приручить Саламандру Майнкрафт

Как вырастить Аксолотля Майнкрафт, приручить Саламандру Майнкрафт

Аксолот в Minecraft станет отличным помощником для игроков при действиях под водой, если они знают, как им пользоваться.

A Quiet Place: The Road Ahead Конфигурация игры для ПК

A Quiet Place: The Road Ahead Конфигурация игры для ПК

Конфигурация A Quiet Place: The Road Ahead имеет довольно высокий рейтинг, поэтому вам нужно будет рассмотреть ее перед принятием решения о загрузке.