Menu
CoddyTech

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: 0xc000014070

Ta 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 coddy

Lư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.

challenge icon

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:

  1. Tạo một con trỏ có kiểu int bằng hàm new().
  2. In ra giá trị mặc định của con trỏ.
  3. Gán giá trị do người dùng nhập vào cho con trỏ đó.
  4. 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

Tự luyện tập: Trình biên dịch Go online