Hàm new
Bài học 3 trên 19 trong khóa học Hàm và con trỏ trong Go của Coddy.
Trong các bài học trước, chúng ta đã biết biến là các đối tượng hoặc vùng nhớ có tên trỏ đến vùng nhớ đó.
Trong Go, ta có hàm (function) tạo vùng nhớ không có tên. Ta thực hiện việc này bằng hàm new(). Cú pháp như sau:
coddy := new(string)Ở đây, ta tạo một đối tượng có tên coddy và kiểu string. Hàm new() trả về một con trỏ đến đối tượng (vùng nhớ) đó.
Nếu in tên này ra, ta sẽ nhận được địa chỉ bộ nhớ của vùng nhớ đó:
fmt.Println("Value:", coddy)Kết quả sẽ là:
Value: 0xc000014070Ta có thể gán lại một giá trị cho con trỏ này như sau:
coddy := new(string)
*coddy = "Learn To Code with coddy"
fmt.Println("Value:", *coddy)Kết quả sẽ là:
Value: Learn To Code with coddyLưu ý rằng khi tạo con trỏ bằng hàm new(), giá trị mặc định không phải là nil. Giá trị này phụ thuộc vào kiểu dữ liệu, giống như với biến. Nếu kiểu dữ liệu là int, giá trị mặc định là 0; với string, đó là chuỗi rỗng; còn với boolean, đó là false.
Thử thách
DễViết một chương trình nhận đầu vào từ người dùng và thực hiện những việc sau:
- Tạo một con trỏ có kiểu int bằng hàm new().
- In ra giá trị mặc định của con trỏ.
- Gán giá trị do người dùng nhập vào cho con trỏ đó.
- In ra giá trị của con trỏ sau khi gán.
Tự làm thử
package main
import (
"fmt"
)
func main() {
// Nhận đầu vào từ người dùng. Đừng thay đổi phần này!
var num int
fmt.Scanln(&num)
// Tạo một con trỏ kiểu int bằng hàm (function) new().
// In ra giá trị mặc định của con trỏ.
fmt.Println("Default value of the pointer:", ?)
// Gán giá trị người dùng nhập vào con trỏ đó
// In ra giá trị của con trỏ sau khi gán.
fmt.Println("Value of the pointer after assignment:", ?)
}
Tất cả bài học trong Hàm và con trỏ trong Go
1Giới thiệu
Giới thiệu4Ôn tập các hàm xử lý chuỗi trong Go
Chuỗi trong GolangHàm nốiHàm kiểm tra chuỗi conHàm tìm chỉ sốThử thách ôn tập #1Tự luyện tập: Trình biên dịch Go online