jsrosetta

Cơ bản

Nội suy chuỗi

Template literal (`${}`) của JavaScript so với fmt.Sprintf (Go), format!/println! (Rust), string interpolation (Swift) và String.formatted (Java).

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.0Rust ≥ 1.58Swift ≥ 2.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

JavaScript có cú pháp nội suy chuỗi ngay trong ngôn ngữ bằng template literal (chuỗi bọc dấu backtick). Go không có cú pháp riêng cho việc này — bạn dùng fmt.Sprintf với các format verb (%s, %d, …), giống printf của C. Swift có nội suy chuỗi thật trong ngôn ngữ: \(...) chấp nhận bất kỳ biểu thức nào. Rust thì khác: format!/println! chỉ là macro của thư viện chuẩn (std), không phải cú pháp lõi của ngôn ngữ; từ Rust 1.58 nó cho phép "capture" trực tiếp một identifier đơn giản đang có sẵn trong scope ({name}), nhưng không chấp nhận biểu thức hay truy cập field bên trong dấu ngoặc — {user.name} hay {a + b} đều không biên dịch, phải gán ra biến cục bộ trước hoặc dùng đối số vị trí/đặt tên (format!("{}", user.name)). Java thì không có nội suy chuỗi — kể cả String Templates từng được preview ở Java 21/22 rồi bị rút lại — nên vẫn phải dùng String.format/.formatted() kiểu printf, giống Go.

Nội suy chuỗi

const name = 'bob'
const age = 21
const message = `${name} is ${age} years old`
 
console.log(message)
bob is 21 years old

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#interpolation