Bỏ qua nội dung

Ngày 12 - Đầu vào và Con trỏ

Xin chào mọi người. Sau một ngày tạm gián đoạn vì lý do khách quan thì ngày 12 của hành trình đã chính thức quay trở lại rồi đây. Bây giờ là lúc để chúng ta sẽ cải tiến mã nguồn của mình.

Nếu bạn đã sẵn sàng, hãy lên đường cùng chúng mình thôi! 🚗

Nhận đầu vào từ người dùng

Hôm qua, chúng ta đấu cứng giá trị của các biến và hằng số, gồm challenge, totalDaysdaysCompleted. Bây giờ là lúc để chúng ta thêm biến mới và điều chỉnh mã nguồn. Kết quả được hiện ngay bên dưới.

src/main.go
package main
import "fmt"
func main() {
challenge := "#90NgàyDevOps"
const totalDays = 90
fmt.Printf("Chào mừng đến với %v\n", challenge)
fmt.Printf("Đây là hành trình %v ngày.\n", totalDays)
var facebookName string
var daysCompleted int
facebookName = "buile.tuananh"
daysCompleted = 12
fmt.Printf("%v đã hoàn thành %v ngày của hành trình.\n", facebookName, daysCompleted)
fmt.Println("Chúc bạn thượng lộ bình an!")
}

Facebook Name

Vì số ngày và tên người dùng có thể thay đổi liên tục, do đó cần phải cho phép người dùng nhập từ đầu vào hệ thống. Chúng ta tiếp tục thay đổi mã nguồn, lần này sẽ sử dụng một hàm khác từ trong gói fmt.

Ta sẽ sử dụng câu lệnh sau để cho phép người dùng nhập thông tin.

fmt.Scan(&facebookName)

Dấu & được chỉ định là một con trỏ và chúng ta sẽ tìm hiểu ở phần tiếp theo.

Mã nguồn và kết quả sẽ được thay đổi như sau.

src/main.go
package main
import "fmt"
func main() {
const totalDays int = 90
challenge := "#90NgàyDevOps"
fmt.Printf("Chào mừng đến với %v.\n", challenge)
fmt.Printf("Đây là hành trình %v ngày.\n", totalDays)
var facebookName string
var daysCompleted int
fmt.Println("Nhập thông tin facebook của bạn: ")
fmt.Scanln(&facebookName)
fmt.Println("Bạn đã hoàn thành bao nhiêu ngày rồi?: ")
fmt.Scanln(&daysCompleted)
fmt.Printf("%v đã hoàn thành %v ngày của hành trình.\n", facebookName, daysCompleted)
fmt.Println("Xin cảm ơn và chúc bạn thượng lộ bình an!")
}

Scanning

Việc cuối cùng trong ngày hôm nay, là bổ sung thêm thông tin số ngày còn lại của hành trình, để chúng ta có thể dễ dàng kiểm tra hơn lịch trình chuyến đi.

Chúng ta khai báo thêm một biến có tên là remainingDays. Biến này có giá trị khởi tạo là 90, và điều chỉnh dựa trên công thức sau.

remainingDays = remainingDays - daysCompleted

Mã nguồn chương trình sẽ tiếp tục được cập nhật và kết quả sẽ thay đổi như sau.

src/main.go
package main
import "fmt"
func main() {
const totalDays int = 90
var remainingDays int = 90
challenge := "#90NgàyDevOps"
fmt.Printf("Chào mừng đến với %v.\n", challenge)
fmt.Printf("Đây là hành trình %v ngày.\n", totalDays)
var facebookName string
var daysCompleted int
fmt.Println("Nhập thông tin facebook của bạn: ")
fmt.Scanln(&facebookName)
fmt.Println("Bạn đã hoàn thành bao nhiêu ngày rồi?: ")
fmt.Scanln(&daysCompleted)
remainingDays = remainingDays - daysCompleted
fmt.Printf("%v đã hoàn thành %v ngày của hành trình.\n", facebookName, daysCompleted)
fmt.Printf("Bạn còn %v ngày cho hành trình %v.\n", remainingDays, challenge)
fmt.Println("Xin cảm ơn và chúc bạn thượng lộ bình an!")
}

Remaining Days

Con trỏ 👆

Con trỏ được xem như một biến, biến này sẽ trỏ về địa chỉ của một biến khác. Địa chỉ này có định dạng thập lục phân (ô nhớ). Mọi người có thể tìm hiểu thêm về con trỏ tại đây

Để dễ hiểu, hãy xem đoạn mã nguồn và kết quả sau.

src/pointers.go
package main
import "fmt"
func main() {
var challenge = "#90NgàyDevOps"
fmt.Println(challenge)
fmt.Println(&challenge)
}

Pointers

Giá trị đầu tiên, người ta thường gọi là tham trị. Giá trị thứ hai, người ta thường gọi là tham chiếu.

Hết nội dung ngày 12. Xin chào tạm biệt! 👋

Tài liệu tham khảo 📚

Mời mọi người chuyển sang trang này để theo dõi tất cả tài liệu liên quan trong giai đoạn 2, để giúp bản thân có được những tài liệu hữu ích về Golang trong làm việc với DevOps.

Hẹn gặp mọi người ở những ngày tiếp theo. 🚀